분류 전체보기(222)
-
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 -
17144 - 미세먼지 안녕!
# 1. 미세먼지 확산 # 네방향으로 확산, 인접한 방향에 공기청정기가 있거나, 칸이 없으면 확산이 일어나지 않음 # 확산되는 양은 1/5(소수점 버림) # 확산되고 남은 미세먼지 양은 A확산되고 남은 양 import copy def spreadDust(graph): cntList = [[0]*C for _ in range(R)] addDustList = [[0]*C for _ in range(R)] for r in range(R): for c in range(C): cnt = 0 dust = int(graph[r][c]//5) if [r, c] not in cleanMac: for i in range(4): nx = r + dx[i] ny = c + dy[i] if 0
2022.05.03