li = [[0]*10]* 10 li li[0][0] = 1 li
위 코드를 실행해보시면 문제를 아실 수 있을 것 같습니다.
[0] * 10 은 0이 10개 있는 list 이지만
([0] *10) *10 은 그 리스트를 10개 복사해서 붙인 리스트이긴한데....
10개가 같은 리스트를 가리킵니다. 그래서 li[0] 의 어떤 원소를 바꾸면
li[1] 의 그 위치 원소, li[2]의. .. 등등다 바뀝니다.
그래서 아래와 같이 반복적으로 써주셔야 합니다.
li = [ [0] * 10 for i range(n) ]
jemmm 3년 전
안녕하세요!
다른 방법으로 풀었지만 메모이제이션 공부를 위해 이 방법으로 풀어보았습니다.
n>=2 일 경우 메모이제이션(리스트-li) 의 값들이 같아지는 현상이 나타납니다.
왜 그런지 이유를 모르겠네요 ㅠㅠ
제가 메모이제이션을 잘못 이해하고 있는 걸까요?
아니면 다른걸 놓친 걸까요?