dd9s2   2년 전

안녕하세요! 문제 풀다가 궁금한 점이 있어 질문 드립니다. 

메모이제이션할 배열 dp를 선언하는 방식에 따라서 테스트케이스 10, 4, 6일때 답이 서로 다르게 나오더라구요. 

dp = [[[0 for _ in range(21)] for _ in range (21)] for _ in range (21)] 

로 선언하였을 때에는 523이, 

dp = [[[0]*21]*21]*21 

로 선언하였을 때에는 29696이 답으로 나옵니다. 

두 방법 모두 동일한 배열을 선언하지 않나요..?

왜 이런 차이가 생기는지 알려주시면 감사하겠습니다!!

tentoto   2년 전

chobono님의 질문에 달린 답글 가져와서 달아드립니다.

djm03178

리스트를 *로 복사하는 것은 리스트에 대한 얕은 복사를 의미합니다. 그래서 복사한 리스트와 복사된 리스트가 서로 같은 객체가 되어, 한쪽의 원소를 바꾸면 다른 쪽의 원소도 바뀌게 됩니다.

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