코딩테스트 문제풀이를 하며 찾아보았던 내용을 정리했다.
2차원 리스트를 선언하는 방법 중 두 가지가 있는데, 한 예로 0으로 초기화된 5 X 5 리스트를 만든다고 하자.
arr1 = [[0] * 5] * 5
arr2 = [[0 for i in range(5)] for j in range(5)]
둘 모두 아래와 같은 모양을 가진다.
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]
여기서 (1, 2)의 값을 1로 바꾼다고 하자. 이때 결과는 아래와 같이 달라진다.
# 방법1
[0, 0, 1, 0, 0]
[0, 0, 1, 0, 0]
[0, 0, 1, 0, 0]
[0, 0, 1, 0, 0]
[0, 0, 1, 0, 0]
# 방법2
[0, 0, 0, 0, 0]
[0, 0, 1, 0, 0]
[0, 0, 0, 0, 0]
[0, 0, 0, 0, 0]
[0, 0, 0, 0, 0]
이는 [방법1]의 경우 얕은 복사가 되기 때문이다. 자세한 원리는 아래 참고문헌 링크를 참조한다.
heapq.heappush(힙 리스트, 요소값)
heapq.heappop()
힙리스트[0]
인 것이다.heapq.heapify(리스트)
파이썬은 빈 리스트를 False로 인식한다.
A or B이면 A가 True일 때 A를, False일 때 B를 택한다.
#문제: 리스트 L 내에서, 원소 x 가 발견되는 모든 인덱스를 구하여 이 인덱스들로 이루어진 리스트를 반환
# L = [64, 72, 83, 72, 54] 이고 x = 83 인 경우의 올바른 리턴 값은 [2] 입니다.
# 없으면 [-1] 반환
answer = [i for i in range(len(L)) if L[i] == x]
return answer or [-1]
#만약 answer의 길이가 0이라면 answer = False가 됨
# answer이 False이면 다음 것.
None과 비교할 때는 ==
나 !=
보단 is
, not
을 씀
https://stackoverflow.com/questions/14247373/python-none-comparison-should-i-use-is-or
영화 <아이언맨>을 보고 무턱대고 공대에 진학, 이제는 기술로 세상을 안전하게 만들고자 합니다.
자율주행 개발에서 시작해, 지금은 컴퓨터 비전과 딥러닝을 공부하고 있습니다.
뭐든지 차근차근, 설령 느리더라도 멈춤은 없이 가고 싶습니다.