[Python] 백준 20057: 마법사 상어와 토네이도
www.acmicpc.net/problem/20057 20057번: 마법사 상어와 토네이도 마법사 상어가 토네이도를 배웠고, 오늘은 토네이도를 크기가 N×N인 격자로 나누어진 모래밭에서 연습하려고 한다. 위치 (r, c)는 격자의 r행 c열을 의미하고, A[r][c]는 (r, c)에 있는 모래의 양을 www.acmicpc.net 풀이 방법 토네이도와 모래의 이동경로만 잘 잡아주면 풀 수 있는 문제였다. 토네이도는 (n//2, n//2)지점부터 시작해서 방향은 좌, 하, 우, 상을 반복하면서 해당 방향으로 1칸, 1칸, 2칸, 2칸, 3칸, 3칸, 4칸, 4칸, ... 이렇게 2를 주기로 칸수를 늘려서 같은 방향을 이동한다. (아래 이미지 참고) 위를 기준으로 0부터 n*n-1까지 이동할 방향을 arr에 ..
[Python] 얕은 복사가 일어나는 경우
얕은 복사란 배열 a에 배열 b를 할당하면 배열이 새로운 메모리 공간에 같은 값이 할당되는 것이 아니라 같은 메모리 공간을 바라보게 된다. 그렇게 되면 b를 변경했을 때 a까지 변경된다. 단일 값을 저장하는 변수에 대한 배정은 얕은 복사가 일어나지 않는다. a = [1, 2, 3, 4] b = a b[0] = 2 print(a) # [2, 2, 3, 4] 방심할 수 있는 얕은 복사가 일어나는 경우 1. *연산을 이용해서 만든 배열 arr = [[0]]*4 print(arr) # [0, 0, 0, 0] arr[0][0] = 1 print(arr) # [1, 1, 1, 1] 2. 배열에 다른 배열 배정 : 이 경우는 가장 대표적이지만 아래와 같은 경우 방심할 수 있다. a[i] = a[i-1] # a가 이차..
[Python] 백준 17779: 게리맨더링 2
www.acmicpc.net/problem/17779 17779번: 게리맨더링 2 재현시의 시장 구재현은 지난 몇 년간 게리맨더링을 통해서 자신의 당에게 유리하게 선거구를 획정했다. 견제할 권력이 없어진 구재현은 권력을 매우 부당하게 행사했고, 심지어는 시의 이름 www.acmicpc.net 풀이 과정 개인적으로 골드 4치고는 어려웠던 문제 같다. 우선 구역 5가 되는 경계 부터 체크해준다. 이후 각 1, 2, 3, 4의 범위(문제에 명시된)에 포함되고, 경계를 만나기 전까지 인구수를 더해준다. 5 구역의 인구는 전체 인구에서 1, 2, 3, 4 인구의 합을 빼는 것이 가장 편하다. 전체 코드 def calculate(x, y, d1, d2): arr = [0,0,0,0,0] temp = [[0]*n f..