백준(Python) 풀이 477

백준(Python) 15649번 N과 M (1) 풀이

Python으로 구현한 15649번 N과 M (1) 문제 풀이입니다. https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net n, m = map(int, input().split()) def permutations(arr, r) : for i in range(len(arr)) : if r == 1 : yield [arr[i]] else : for next in permutations(arr[:i] + arr[i+1:], r-1) : yield [ar..

백준(Python) 3085번 사탕 게임 풀이

Python으로 구현한 3085번 사탕 게임 문제 풀이입니다. https://www.acmicpc.net/problem/3085 3085번: 사탕 게임 예제 3의 경우 4번 행의 Y와 C를 바꾸면 사탕 네 개를 먹을 수 있다. www.acmicpc.net n = int(input()) data = [list(input()) for _ in range(n)] result = 0 def check_col() : global result for k in range(n) : length = 1 for l in range(n-1) : if data[k][l] == data[k][l+1] : length += 1 result = max(result, length) else : length = 1 def check_..

백준(Python) 2309번 일곱 난쟁이 풀이

Python으로 구현한 2309번 일곱 난쟁이 문제 풀이입니다. https://www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net def combinations(arr, r) : for i in range(len(arr)) : if r == 1 : yield [arr[i]] else : for next in combinations(arr[i+1:], r-1) : yield [arr[i]] + next data = [int(input()) for _ in range(9)]..

백준(Python) 1655번 가운데를 말해요 풀이

Python으로 구현한 1655번 가운데를 말해요 문제 풀이입니다. https://www.acmicpc.net/problem/1655 1655번: 가운데를 말해요 첫째 줄에는 백준이가 외치는 정수의 개수 N이 주어진다. N은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수이다. 그 다음 N줄에 걸쳐서 백준이가 외치는 정수가 차례대로 주어진다. 정수는 -1 www.acmicpc.net # PyPy3 정답 import heapq n = int(input()) leftheap = [] rightheap = [] result = [] for _ in range(n) : value = int(input()) if len(leftheap) == len(rightheap) : heapq.heappush(l..

백준(Python) 9576번 책 나눠주기 풀이

Python으로 구현한 9576번 책 나눠주기 문제 풀이입니다. https://www.acmicpc.net/problem/9576 9576번: 책 나눠주기 백준이는 방 청소를 하면서 필요 없는 전공 서적을 사람들에게 나눠주려고 한다. 나눠줄 책을 모아보니 총 N권이었다. 책이 너무 많기 때문에 백준이는 책을 구분하기 위해 각각 1부터 N까지의 www.acmicpc.net t = int(input()) for _ in range(t) : n, m = map(int, input().split()) flag = [False] * (n + 1) data = [] for _ in range(m) : a, b = map(int, input().split()) data.append((a, b)) data.sort(k..

백준(Python) 1202번 보석 도둑 풀이

Python으로 구현한 1202번 보석 도둑 문제 풀이입니다. https://www.acmicpc.net/problem/1202 1202번: 보석 도둑 첫째 줄에 N과 K가 주어진다. (1 ≤ N, K ≤ 300,000) 다음 N개 줄에는 각 보석의 정보 Mi와 Vi가 주어진다. (0 ≤ Mi, Vi ≤ 1,000,000) 다음 K개 줄에는 가방에 담을 수 있는 최대 무게 Ci가 주어진다. (1 ≤ Ci www.acmicpc.net import heapq n, k = map(int, input().split()) data = [] for _ in range(n) : w, v = map(int, input().split()) # 무게, 가격 heapq.heappush(data, (w, v)) bag = [..

백준(Python) 1715번 카드 정렬하기 풀이

Python으로 구현한 1715번 카드 정렬하기 문제 풀이입니다. https://www.acmicpc.net/problem/1715 1715번: 카드 정렬하기 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장 www.acmicpc.net import heapq n = int(input()) heap = [] for _ in range(n) : heapq.heappush(heap, int(input())) if n == 1 : print(0) else : total = 0 while len(heap) > 1 : # 가장 작은 두개의 값 꺼내기 pop_1..

백준(Python) 11286번 절댓값 힙 풀이

Python으로 구현한 11286번 절댓값 힙 문제 풀이입니다. https://www.acmicpc.net/problem/11286 11286번: 절댓값 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net # PyPy3 정답 import heapq n = int(input()) heap = [] result = [] for _ in range(n) : x = int(input()) if x == 0 : try : result.append(heapq.heappop(heap)[1]) except : result.app..

백준(Python) 11279번 최대 힙 풀이

Python으로 구현한 11279번 최대 힙 문제 풀이입니다. https://www.acmicpc.net/problem/11279 11279번: 최대 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 www.acmicpc.net import heapq n = int(input()) heap = [] result = [] for _ in range(n) : x = int(input()) if x == 0 : if not heap : result.append(0) else : result.append(-heapq.heappop(heap)) el..

백준(Python) 1927번 최소 힙 풀이

Python으로 구현한 1927번 최소 힙 문제 풀이입니다. https://www.acmicpc.net/problem/1927 1927번: 최소 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net import heapq n = int(input()) data = [] result = [] for _ in range(n) : x = int(input()) if x == 0 : if not data : result.append(0) else : result.append(heapq.heappop(data)) else..