[Python] list, set, dict 컨테이너
알고리즘을 하면서 주의할 점이 list, set, dict 등의 컨테이너 타입을 쓸 때이다. 컨테이너 타입은 일반적으로 복사를 하게 되면 주소값이 들어가 변경하게 되면 복사된 값까지 그대로 옮겨가게 되기 때문이다. s = set() s.add(1) ss = s s.add(2) print(ss) # 결과 {1,2} l = [tuple()]*17 l[0] = (1,2) ll = l l[0] = (1,3) print(ll) # [(1, 3), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()] 그러므로 복사를 하기 위해선 copy에 있는 deepcopy를 사용 혹은 리스트 컴프리헨션을 사용하여 복사해줘야 한다.
[Python] 블록 이동하기
https://programmers.co.kr/learn/courses/30/lessons/60063 코딩테스트 연습 - 블록 이동하기 [[0, 0, 0, 1, 1],[0, 0, 0, 1, 0],[0, 1, 0, 1, 1],[1, 1, 0, 0, 1],[0, 0, 0, 0, 0]] 7 programmers.co.kr 1. 이해하기 (1,1)에서 시작하여 (N,N)에 도착하는데 걸리는 최소 시간을 구해야 한다. 로봇은 두 칸을 차지한다. 로봇은 회전과 이동이 가능하다. 회전 시 조건에 맞아야 회전이 가능하다. 로봇이 항상 목적지에 도착할 수 있는 경우만 입력으로 주어진다. 2. 구현하기 걸리는 최소 시간을 구하기 위해서는 BFS를 이용하여 구현이 가능하다. 그 이유는 회전, 이동 모두 가중치가 1이기 때문..