hvjjg5687   2년 전

짝수 n까지의 숫자를 한 번씩만 이용해서 만들 수 있는 길이 n//2의 조합을 만드는 코드를 작성했습니다.

recur함수는 for문을 돌리면서 중복되지 않는 숫자를 하나씩 temp에 append하고,

temp의 길이가 n//2이 될때 temp를 함수 밖의 list 인 result에 append해줍니다.


코드를 실행을 해보면,

코드 중간 점검을 위해 넣은 print(temp)에서는 temp가 잘 나오는데

result를 print해보면 temp가 모두 빈 리스트인 것처럼 나옵니다.

하루 종일 고민해봤는데 어디가 잘못된 건지 모르겠습니다 ㅠㅠ

shinryan9   2년 전

result.append(temp)를 하게 되면 temp에 들어 있는 숫자를 가르키는게 아닌 temp 그 자체를 가르키므로 제귀 함수가 진행하면서 temp.pop()를 만나게 되면 answer 또한, pop하게 됩니다. recur(i+1,end+1) 밑에 result를 출력해보시면 이해가 되실겁니다!

hvjjg5687   2년 전

답변해주신 점 참고해서 result.append(temp[:])로 바꿨더니 시원하게 해결됐습니다!

답변 정말 감사합니다 :)

hvjjg5687   2년 전

문제에 쓸 수 있게 더 수정한 코드도 올려놓겠습니다 ㅎㅎ

댓글을 작성하려면 로그인해야 합니다.