목록algorithm (61)
현제의 현재이야기

2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net | DFS 풀이 bilgisayar = int(input()) n = int(input()) graph = [[] for _ in range(bilgisayar + 1)] check = [0] * (bilgisayar + 1) cnt = 0 for _ in range(n): x, y = map(int, input().split()) graph[x].append(y) graph[y].append(x) def dfs(i): global cnt check[i] = 1 cn..

1331번: 나이트 투어 나이트 투어는 체스판에서 나이트가 모든 칸을 정확히 한 번씩 방문하며, 마지막으로 방문하는 칸에서 시작점으로 돌아올 수 있는 경로이다. 다음 그림은 나이트 투어의 한 예이다. 영식이는 6× www.acmicpc.net chess = [[0] * 6 for _ in range(6)] order = [] cnt = 0 for _ in range(36): target = input() target = list(target) if target[0] == "A": target[0] = 1 target[1] = int(target[1]) order.append(target) elif target[0] == "B": target[0] = 2 target[1] = int(target[1]) o..

15787번: 기차가 어둠을 헤치고 은하수를 입력의 첫째 줄에 기차의 수 N(1 ≤ N ≤ 100000)과 명령의 수 M(1 ≤ M ≤ 100000)가 주어진다. 이후 두 번째 줄부터 M+1번째 줄까지 각 줄에 명령이 주어진다. www.acmicpc.net from collections import deque def one(arr, x): if arr[x] == 1: return arr else: arr[x] = 1 return arr def two(arr, x): if arr[x] == 0: return arr else: arr[x] = 0 return arr def thr(arr): arr = deque(arr) arr.rotate(1) if arr[0] == 1: arr[0] = 0 return l..

18310번: 안테나 첫째 줄에 집의 수 N이 자연수로 주어진다. (1≤N≤200,000) 둘째 줄에 N채의 집에 위치가 공백을 기준으로 구분되어 1이상 100,000이하의 자연수로 주어진다. www.acmicpc.net n = int(input()) arr = list(map(int,input().split())) arr = sorted(arr) print(arr[(n - 1)//2]) 중앙값을 구하면 된다...

2644번: 촌수계산 사람들은 1, 2, 3, …, n (1 ≤ n ≤ 100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어 www.acmicpc.net all_people = int(input()) target_a, target_b = map(int, input().split()) m = int(input()) graph = [[] for _ in range(all_people + 1)] visited = [False] * (all_people + 1) for _ in range(m): x, y = map(int, input().split()) graph[x].append(y) graph[y..

15486번: 퇴사 2 첫째 줄에 N (1 ≤ N ≤ 1,500,000)이 주어진다. 둘째 줄부터 N개의 줄에 Ti와 Pi가 공백으로 구분되어서 주어지며, 1일부터 N일까지 순서대로 주어진다. (1 ≤ Ti ≤ 50, 1 ≤ Pi ≤ 1,000) www.acmicpc.net n = int(input()) sch = [ tuple(map(int, input().split())) for _ in range(n) ] dp = [0 for _ in range(n+1)] print(dp) if sch[n - 1][0] == 1: dp[n - 1] = sch[n - 1][1] else: dp[n - 1] = 0 for i in range(n - 2, -1, -1): if i + sch[i][0]> n: dp[i] ..