반응형

개발 연습장/백준 문제풀이 221

[파이썬, Python] 백준 1260: DFS와 BFS

문제 https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 코드 from collections import deque import sys input = sys.stdin.readline n, m, v = map(int,input().split()) graph = [[]for _ in range(n + 1)] for _ in range(m): a, b = map(int, input().split()) graph[a..

[파이썬, Python] 백준 2606: 바이러스

문제 https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net 코드 import sys input = sys.stdin.readline c = int(input()) n = int(input()) visited = [False for _ in range(c + 1)] graph = [[]for _ in range(c + 1)] for _ in range(n): a, b = map(int, input().split()) graph[a].append(b) gra..

[파이썬, Python] 백준 24480: 알고리즘 수업 - 깊이 우선 탐색 2

문제 https://www.acmicpc.net/problem/24480 24480번: 알고리즘 수업 - 깊이 우선 탐색 2 첫째 줄에 정점의 수 N (5 ≤ N ≤ 100,000), 간선의 수 M (1 ≤ M ≤ 200,000), 시작 정점 R (1 ≤ R ≤ N)이 주어진다. 다음 M개 줄에 간선 정보 u v가 주어지며 정점 u와 정점 v의 가중치 1인 양 www.acmicpc.net 코드 import sys input = sys.stdin.readline sys.setrecursionlimit(10**9) n, m, r = map(int,input().split()) graph = [[] for _ in range(n+1)] visited = [0] * (n+1) cnt = 1 def dfs(gra..

[파이썬, Python] 백준 24479: 알고리즘 수업 - 깊이 우선 탐색 1

문제 https://www.acmicpc.net/problem/24479 24479번: 알고리즘 수업 - 깊이 우선 탐색 1 첫째 줄에 정점의 수 N (5 ≤ N ≤ 100,000), 간선의 수 M (1 ≤ M ≤ 200,000), 시작 정점 R (1 ≤ R ≤ N)이 주어진다. 다음 M개 줄에 간선 정보 u v가 주어지며 정점 u와 정점 v의 가중치 1인 양 www.acmicpc.net 코드 import sys input = sys.stdin.readline sys.setrecursionlimit(10**9) n, m, r = map(int,input().split()) graph = [[] for _ in range(n+1)] visited = [0] * (n+1) cnt = 1 for i in ra..

[파이썬, Python] 백준 2805: 나무 자르기

문제 https://www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net 코드 import sys input = sys.stdin.readline n,m = map(int,input().split()) tree = list(map(int, input().split())) start, end = 0, max(tree) while start = mid: cut_tree += i - mid if cut_tree >= m: star..

[파이썬, Python] 백준 1654: 랜선 자르기

문제 https://www.acmicpc.net/problem/1654 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 코드 import sys input = sys.stdin.readline k, n = map(int, input().split()) lan = [int(input()) for _ in range(k)] start, end = 1, max(lan) while start = n: start = mid + 1 else: end = mid - 1 print(end) 설명..

[파이썬, Python] 백준 1920: 수 찾기

문제 https://www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net 코드 n = int(input()) a_list = list(map(int, input().split())) a_list = set(a_list) m = int(input()) num_list = list(map(int, input().split())) for i in num_list: if i in a_list: print(1) else: p..

[파이썬, Python] 백준 10866: 덱

문제 https://www.acmicpc.net/problem/10866 10866번: 덱 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 코드 import sys input = sys.stdin.readline n = int(input()) deque = [] for _ in range(n): com = input().split() if com[0] == "push_front": deque.insert(0, com[1]) elif com[0] == "push_back": deque.append(com[1]) e..

[파이썬, Python] 백준 1966: 프린터 큐

문제 https://www.acmicpc.net/problem/1966 1966번: 프린터 큐 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 www.acmicpc.net 코드 import sys input = sys.stdin.readline t = int(input()) for _ in range(t): cnt = 0 n,m = map(int,input().split()) paper = list(map(int,input().split())) idx = [i for i in range(len(paper))] target = idx[m] while len(pape..

[파이썬, Python] 백준 11866: 요세푸스 문제 0

문제 https://www.acmicpc.net/problem/11866 11866번: 요세푸스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net 코드 import sys input = sys.stdin.readline n, k = map(int, input().split()) first_k = k f_list = [] a_list = [] for i in range(n): f_list.append(i+1) while f_list: a_list.append(f_list.pop(k-1)) if not f_list: break k += first_k-1 while k > len(f_list): k -= len(f_list)..

반응형