아직 초보라 틀린 내용이 있을 수 있으니 스뭇스하게 알려주시면 감사합니다 ㅠㅠ
파이썬에서 빠르게 배열을 선언할 때,
[0]*N <- 이 방법을 주로 애용했었다
이 경우 톱니바퀴형 이차원 배열 (열의 크기가 제각각인 이차원 배열) 을 만들고자 했기에 이렇게 선언했다.
그런데 이렇게 선언했을 때의 문제점을 찾았다.
정수형 배열안에 있는 수인 x를 10으로 나머지 연산한 인덱스에 해당 x 를 넣고 싶었다.
즉,
이런 연산을 수행하고 싶었다.
만약 x가 1,2,3,4,5 일 때
[[0],[0,1],[0,2],[0,3],[0,4],[0,5]] <-이렇게 나오길 바랐으나, 결과는,...
이렇게 한번에 다같이 추가되는 것이 아닌가!
아마 처음에 다같이 0으로 한번에 선언해준 것이 각 행을 같은 원소로 인식하도록 한 것 같다 (궁예)
이것 때문에 브루트포스 같은 알고리즘을 풀 때 앨르 많이 먹었다.
이 문제를 해결하기 위해 buckets 의 선언 방식을 바꾸어 주었다.
이렇게 한 원소씩 추가해 주는 방식을 쓰거나
그냥 한번에 이렇게 선언하면 됐었다 ㅋㅋㅋ이렇게 간단한 문제로 시간을 낭비하다니 ㅠㅠㅠㅠㅠ
[0]*N 으로 배열 선언할 때 항상 주의하자!
'컴맹탈출기 > Python을 파보자' 카테고리의 다른 글
선형 배열(Linear Array) 다루기 - append, insert, pop, del, index (0) | 2020.11.30 |
---|---|
파이썬 for 문으로 list 원소 수정 시 유의할 점 (0) | 2020.09.19 |
파이참 초보의 파이썬 디버깅 해보기 (input값 입력 받을 때) (0) | 2020.09.09 |