프로그래머스 문제를 풀다가 다음과 같은 현상이 발생했다.
def solution(elements):
s = set()
l = len(elements)
for i in range(1, l):
e = elements
for j in range(0, i-1):
e.append(elements[j]) # e에 추가를 했는데 elements에도 추가가 일어남.
나는 e라는 새로운 배열을 만들어서 안에 elements를 넣는 작업, 즉 값 복사를 하고 싶었는데
파이썬에서는 값 복사가 아닌 메모리를 공유하게 된다.
그렇기에 e에 추가했는데 elements에도 추가가 일어난 것이다.
그러면 어떻게 해야할까? 방법은 3가지 정도이다.
e = []
for c in elements:
e.append(c)
이렇게 그냥 하나씩 넣어준다거나..
e = elements[:]
슬라이싱을 통해 새로 생성하거나
e = elements.copy()
값을 복사해서 새로운 리스트를 만드는 것이다.
주의하도록 하자. 파이썬이라고 다 되겄지 하고 무지성으로 했다..
'2024 상반기 취준 준비 코테' 카테고리의 다른 글
구간합 리스트 빨리 구하기 (0) | 2024.04.02 |
---|---|
파이썬에서의 우선 순위 큐(힙) (0) | 2024.03.23 |
프로그래머스 이진 변환 반복하기 (0) | 2024.03.08 |
2/27 (1) | 2024.02.27 |
시작 - 2/27 (0) | 2024.02.27 |