2022(112)
-
15686 - 치킨배달
# 도시의 치킨 거리 = 모든 치킨 거리의 합 # 총 치킨집의 개수 - M 의 도시 치킨 거리가 최소값이 되도록 # 0 : 빈칸, 1 : 집, 2 : 치킨집 def chkDistance(graph, house): distance = [float("inf")] * len(house) for i in range(N): for j in range(N): if graph[i][j] == 2: for idx, home in enumerate(house): distance[idx] = min(distance[idx], abs(home[0]-i) + abs(home[1]-j)) return sum(distance) # 치킨집 삭제 def dfs(graph, cnt): global minLoad if cnt == (c..
2022.05.10 -
15683 - 감시*
처음에는 각 경우의 수에 따라서 for와 if문으로 전개하다보니 시간초과가 나왔다. import copy def rotate(graph, num, r, c, article): # 0 : 고정, 1 : 90도 회전, 2 : 180도 회전, 3 : 270도 회전 if num == 1: # 오른쪽 if article == 0: i = c+1 while i < M and graph[r][i] != 6: if graph[r][i] == 0: graph[r][i] = 'x' else: break i += 1 # 아래쪽 elif article == 1: i = r+1 while i < N and graph[i][c] != 6: if graph[i][c] == 0: graph[i][c] = 'x' else: break..
2022.05.06 -
14891 - 톱니바퀴
K = 1 : 3번 톱니바퀴를 반시계 방향으로 회전 : 3번 톱니바퀴를 기준으로 연두색 칸은 오른쪽, 주황색 칸은 왼쪽 3번 톱니바퀴 기준으로 오른쪽 확인(4번 톱니바퀴) : N(0), S(1)으로 시계방향으로 회전 가능 3번 톱니바퀴 기준으로 왼쪽 확인(2번 톱니바퀴) : S(1), S(1)으로 회전 불가능 2번 톱니바퀴가 회전하지 않으므로, 1번 톱니바퀴도 회전하지 않음 즉, 3번과 4번 톱니바퀴만 반시계, 시계 방향으로 회전 K = 2 : 1번 톱니바퀴를 시계 방향으로 회전 : 1번 톱니바퀴를 기준으로 노란색 칸이 오른쪽, 왼쪽은 없음 1번 톱니바퀴를 기준으로 오른쪽 확인(2번 톱니바퀴) : S(1), N(0)으로 반시계방향으로 회전 가능 2번 톱니바퀴가 회전하였으므로 3번 톱니바퀴도 회전 가능 :..
2022.05.04 -
20058 - 마법사 상어와 파이어스톰
from collections import deque import math N, Q = map(int, input().split()) n = int(math.pow(2, N)) graph = [] for _ in range(n): graph.append(list(map(int, input().split()))) Llist = list(map(int, input().split())) dx = [-1, 0, 1, 0] dy = [0, 1, 0, -1] def rotate90(graph, length): temp = [[0]*length for _ in range(len(graph[0]))] for i in range(length): for j in range(length): temp[i][j] = graph..
2022.05.03 -
20057 - 마법사 상어와 토네이도
import math def ratioList(x, y, idx): #서 if idx == 0: ratioList = [[[x, y-2], 0.05], [[x+1, y-1], 0.1], [[x-1, y-1], 0.1], [[x+1, y], 0.07], [[x-1, y], 0.07], [[x+1, y+1], 0.01], [[x-1, y+1], 0.01], [[x+2, y], 0.02], [[x-2, y], 0.02]] #남 elif idx == 1: ratioList = [[[x+2, y], 0.05], [[x+1, y+1], 0.1], [[x+1, y-1], 0.1], [[x, y+1], 0.07], [[x, y-1], 0.07], [[x-1, y+1], 0.01], [[x-1, y-1], 0.01], ..
2022.05.03 -
17822 - 원판 돌리기
N, M, T = map(int, input().split()) graph = []; xdk = [] for _ in range(N): graph.append(list(map(int, input().split()))) for _ in range(T): xdk.append(list(map(int, input().split()))) result = 0; for n in range(T): x = xdk[n][0]; d = xdk[n][1]; k = xdk[n][2] # k번 회전 for i in range(N): if (i+1)%x == 0: if d == 0: for _ in range(k): graph[i].insert(0, graph[i].pop(-1)) elif d == 1: for _ in range..
2022.05.03