목록Computer Science (228)
DHistory
문제 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 풀이 import sys from collections import deque from copy import deepcopy n, m, v = map(int, sys.stdin.readline().rstrip().split()) graphs = [[] for _ in range(n + 1)] for _ in range(m): a, b = map(int, sys.stdin.readline().rstrip().split()..
문제 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하인 양의 정수이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍 www.acmicpc.net 풀이 import sys from collections import deque n = int(sys.stdin.readline().rstrip()) count = int(sys.stdin.readline().rstrip()) edges = [] visited = [False for _ in range(n + 1)] for _ in range(count): a, b = map(int, sys.stdin.readline().rstrip().split()) edges..
문제 16173번: 점프왕 쩰리 (Small) 쩰리는 맨 왼쪽 위의 칸에서 출발해 (행, 열)로 나타낸 좌표계로, (1, 1) -> (2, 1) -> (3, 1) -> (3, 3)으로 이동해 게임에서 승리할 수 있다. www.acmicpc.net 풀이 import sys n = int(sys.stdin.readline().rstrip()) maps = [] for _ in range(n): lines = list(map(int ,sys.stdin.readline().rstrip().split())) maps.append(lines) dx = [1, 0] dy = [0, 1] visited = [[False for _ in range(n)] for _ in range(n)] def solution(maps..
문제 17503번: 맥주 축제 첫 번째 줄에 축제가 열리는 기간 N (1 ≤ N ≤ 200,000) 과, 채워야 하는 선호도의 합 M (1 ≤ M = m else -1 print(solution(n, m, beers)) 채점 결과
문제 16206번: 롤케이크 오늘은 재현이의 생일이다. 재현이는 친구 N명에게 롤케이크를 1개씩 선물로 받았다. 롤케이크의 길이는 A1, A2, ..., AN이다. 재현이는 길이가 10인 롤케이크만 먹는다. 따라서, 롤케이크를 잘라서 www.acmicpc.net 풀이 """ 친구 N명에레 롤케이크 1개씩 롤케이크 길이 A1, A2, ..., An 길이가 10인 롤케이크만 먹는다. 롤케이크를 잘라서 길이가 10인 롤케이크를 최대한 많이 만든다. 1. 자를 롤케이크를 하나 고른다. 길이가 1보다 큰 롤케이크만 자를 수 있다. 이때, 고른 롤케이크의 길이를 x라고 한다. 2. 0보다 크고, x보다 작은 자연수 y를 고른다. 3. 롤케이크를 잘라 길이가 y, x-y인 롤케이크 두 개로 만든다. 롤케이크를 최대 ..
문제 1911번: 흙길 보수하기 어젯밤 겨울 캠프 장소에서 월드 본원까지 이어지는, 흙으로 된 비밀길 위에 폭우가 내려서 N(1 ≤ N ≤ 10,000)개의 물웅덩이가 생겼다. 월드학원은 물웅덩이를 덮을 수 있는 길이가 L(1 ≤ L ≤ 1,000 www.acmicpc.net 풀이 """ N개의 물웅덩이 물웅덩이를 덮을 수 있는 길이 L 물웅덩이를 덮기 위해 필요한 널빤지의 최소 개수 === example === 3 3 1 6 13 17 8 12 끝 위치는 포함하지 않는다. 111222. // 널빤지 .MMMMM. // 웅덩이 0123456 // 좌표 """ import sys from math import ceil n, l = map(int, sys.stdin.readline().rstrip().spl..
문제 17615번: 볼 모으기 첫 번째 줄에는 볼의 총 개수 N이 주어진다. (1 ≤ N ≤ 500,000) 다음 줄에는 볼의 색깔을 나타내는 문자 R(빨간색 볼) 또는 B(파란색 볼)가 공백 없이 주어진다. 문자열에는 R 또는 B 중 한 종류만 주 www.acmicpc.net 풀이 import sys n = int(sys.stdin.readline().rstrip()) balls = sys.stdin.readline().rstrip()[:n] def solution(balls): r = balls.split('B') b = balls.split('R') # 전체 움직일 볼의 개수 - 왼쪽 or 오른쪽중에 있는 더 많은 동일한 볼의 개수를 제거 (움직이지 않음) return min( balls.count..
문제 4889번: 안정적인 문자열 입력은 여러 개의 데이터 세트로 이루어져 있다. 각 데이터 세트는 한 줄로 이루어져 있다. 줄에는 여는 괄호와 닫는 괄호만으로 이루어진 문자열이 주어진다. 문자열의 길이가 2000을 넘는 경우 www.acmicpc.net 풀이 """ 여는 괄호와 닫는 괄호만 이루어진 문자열이 주어진다. 안정적인 문자열을 만들기 위한 최소 연산의 수를 구하시오. 안정적인 문자열이란? 1. 빈 문자열은 안정적이다. 2. S가 안정적이라면 {S}도 안정적인 문자열이다. 3. S와 T가 안정적이라면, ST도 안정적이다. 연산은 여는 괄호 => 닫는 괄호 / 닫는 괄호 => 여는 괄호 """ import sys def solution(line): if not line: return 0 queue..
문제 1105번: 팔 첫째 줄에 L과 R이 주어진다. L은 2,000,000,000보다 작거나 같은 자연수이고, R은 L보다 크거나 같고, 2,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 풀이 """ L과 R이 주어진다. L보다 크거나 같고, R보다 작거나 같은 자연수 중 8이 가장 적에 들어있는 수에 들어있는 8의 개수는? 108 208 각 자리수에서 8이 나오지 않을 수 있는지 확인 48880 38808 """ l, r = input().split() def solution(l, r): if len(r) > len(l): return 0 carry_bit = False answer = 0 for i, j in zip(l, r): if not carry_bit and ..
문제 15903번: 카드 합체 놀이 첫 번째 줄에 카드의 개수를 나타내는 수 n(2 ≤ n ≤ 1,000)과 카드 합체를 몇 번 하는지를 나타내는 수 m(0 ≤ m ≤ 15×n)이 주어진다. 두 번째 줄에 맨 처음 카드의 상태를 나타내는 n개의 자연수 a1, www.acmicpc.net 풀이 """ 자연수 n장 i번 카드에는 ai가 쓰여있다. 카드 합체 과정 1. x번 카드와 y번 카드를 골라 두 장에 쓰여진 수를 더한 값을 계산한다. (x != y) 2. 계산한 값을 x번 카드와 y번 카드 두 장 모두 덮어 쓴다. 총 m번 하면 놀이가 종료된다. m번 후 n장의 카드에 쓰여있는 수를 모두 더한 값이 이 놀이의 점수이다. 이 점수를 가작 작게 만드는 것이 놀이의 목표이다. 1 2 3 4 3 3 3 4 6..