Zero to Hero
article thumbnail
2477번: 참외밭
Algorithm 2021. 10. 5. 22:26

2477번: 참외밭 첫 번째 줄에 1m2의 넓이에 자라는 참외의 개수를 나타내는 양의 정수 K (1 ≤ K ≤ 20)가 주어진다. 참외밭을 나타내는 육각형의 임의의 한 꼭짓점에서 출발하여 반시계방향으로 둘레를 돌면서 지 www.acmicpc.net import sys r = sys.stdin.readline target = int(r()) x, y, i1, i2 = 0, 0, 0, 0 list1 = [] for i in range(6): direction, length = map(int, r().split()) list1.append((direction, length)) if direction in [3, 4] and y < list1[i][1]: y = list1[i][1] i2 = i if direc..

article thumbnail
2021번: 최소 환승 경로
Algorithm 2021. 8. 15. 17:16

2021번: 최소 환승 경로 첫째 줄에 역의 개수 N(1≤N≤100,000), 노선의 개수 L(1≤L≤100,000)이 주어진다. 다음 L개의 줄에는 각 노선이 지나는 역이 순서대로 주어지며 각 줄의 마지막에는 -1이 주어진다. 마지막 줄에는 출발 www.acmicpc.net import sys from collections import deque, defaultdict r = sys.stdin.readline node_num, flag_num = map(int, r().split()) graph = defaultdict(set) for i in range(1, flag_num + 1): temp = list(map(int, r().split())) temp.pop() for node in temp: g..

2174번: 로봇 시뮬레이션
Algorithm 2021. 4. 18. 17:37

1. 소스 코드 import sys from collections import deque r = sys.stdin.readline width, height = map(int, r().split()) robot_num, command_num = map(int, r().split()) board = [[0] * width for _ in range(height)] robots = {} for i in range(robot_num): y, x, direction = r().split() ny = int(y) - 1 nx = height - int(x) robots[i + 1] = [nx, ny, direction] board[nx][ny] = i + 1 commands = [] for i in range(co..

13549번: 숨바꼭질 3
Algorithm 2021. 4. 15. 15:04

13549번: 숨바꼭질 3 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net import sys from collections import deque r = sys.stdin.readline src, dst = map(int, r().split()) visited = set() q = deque([]) q.append((src, 0)) result = 0 while q: cur_pos, cur_val = q.popleft() if cur_pos == dst: result = cur_val break if 0

1781번: 컵라면 (Python)
Algorithm 2021. 1. 10. 18:26

문제 링크 1781번: 컵라면 상욱 조교는 동호에게 N개의 문제를 주고서, 각각의 문제를 풀었을 때 컵라면을 몇 개 줄 것인지 제시 하였다. 하지만 동호의 찌를듯한 자신감에 소심한 상욱 조교는 각각의 문제에 대해 데드라 www.acmicpc.net 접근 방법 1. N이 200,000이기 때문에 순열로 모든 경우를 고려하는 것은 시간 초과 2. 특정 상황에서 가장 큰 컵라면 값을 뽑아내야 하기 때문에 우선순위 큐 사용 3. 입력된 문제를 시간순 오름차순, 컵라면 값 내림차순 정렬해 deque에 넣는다. 4. deque에서 값을 뽑아내면서 현재 시간보다 데드라인이 크거나 같은 문제의 컵라면 값을 우선순위 큐에 넣어줌 5. 만약에 우선순위 큐의 peek 값이 현재 문제의 컵라면 값보다 작다면 우선순위 큐에서 ..