백준(Python) 풀이/그리디 알고리즘 42

백준(Python) 17262번 팬덤이 넘쳐흘러 풀이

Python으로 구현한 17262번 팬덤이 넘쳐흘러 문제 풀이입니다. https://www.acmicpc.net/problem/17262 17262번: 팬덤이 넘쳐흘러 선물 포장 공장을 말아먹은 욱제는 계곡에서 백숙을 파느라 학교에 자주 가지 못한다. 하지만 월클의 인생은 피곤한 법! 욱제는 지금처럼 힘든 시기에도 자신을 기다리는 5조5억명의 열렬한 팬 www.acmicpc.net n = int(input()) fans = [] for _ in range(n) : fans.append(list(map(int ,input().split()))) a = sorted(fans, key=lambda x: x[0]) b = sorted(fans, key=lambda x: x[1]) result = a[-1][0]..

백준(Python) 12782번 비트 우정지수 풀이

Python으로 구현한 12782번 비트 우정지수 문제 풀이입니다. https://www.acmicpc.net/problem/12782 12782번: 비트 우정지수 진홍이는 숫자를 좋아한다. 오늘도 숫자를 가지고 놀던 진홍이는 두 숫자의 비트 우정지수를 구해보았다. 비트 우정지수란, 10진법으로 나타낸 두 정수를 이진수로 나타내었을 때, 두 숫자를 같 www.acmicpc.net t = int(input()) for _ in range(t) : n, m = input().split() count_1 = 0 count_0 = 0 for i in range(len(m)) : if n[i] != m[i] : if m[i] == '1' : count_1 += 1 else : count_0 += 1 print(m..

백준(Python) 17521번 Byte Coin 풀이

Python으로 구현한 17521번 Byte Coin 문제 풀이입니다. https://www.acmicpc.net/problem/17521 17521번: Byte Coin 입력은 표준입력을 사용한다. 첫 번째 줄에 요일 수를 나타내는 양의 정수 n과 초기 현금 W(1 ≤ n ≤ 15, 1 ≤ W ≤ 100,000)가 주어진다. 다음 n 개의 줄에서, i번째 줄은 i일의 바이트 코인 가격을 나 www.acmicpc.net n, w = map(int, input().split()) data = [] for _ in range(n) : data.append(int(input())) coin = 0 for i in range(n-1) : if data[i] < data[i+1] : if w // data[i] ..

백준(Python) 1417번 국회의원 선거 풀이

Python으로 구현한 1417번 국회의원 선거 문제 풀이입니다. https://www.acmicpc.net/problem/1417 1417번: 국회의원 선거 첫째 줄에 후보의 수 N이 주어진다. 둘째 줄부터 차례대로 기호 1번을 찍으려고 하는 사람의 수, 기호 2번을 찍으려고 하는 수, 이렇게 총 N개의 줄에 걸쳐 입력이 들어온다. N은 50보다 작거나 같 www.acmicpc.net n = int(input()) dasom = int(input()) if n = dasom : data = others.index(max(others)) dasom += 1 others[data] -=1 result += 1 print(result) 1. n과 다솜이의 득표수를 입력받은 후, 입력받은 n이 1 이하일 경우..

백준(Python) 19939번 박 터뜨리기 풀이

Python으로 구현한 19939번 박 터뜨리기 문제 풀이입니다. https://www.acmicpc.net/problem/19939 19939번: 박 터뜨리기 $N$개의 공을 $K$개의 바구니에 문제의 규칙을 만족하면서 나눠 담을 수 있다면, 가장 많이 담긴 바구니와 가장 적게 담긴 바구니의 공의 개수 차이를 출력한다. 나눠 담을 수 없는 경우에는 -1을 www.acmicpc.net n, k = map(int, input().split()) if n < k * (k + 1) // 2 : print(-1) else : data = n - k * (k + 1) // 2 if data % k == 0 : print(k - 1) else : print(k) 1. 한 바구니에 가장 적게 담겨있는 공이 1개라고 ..

백준(Python) 16435번 스네이크버드 풀이

Python으로 구현한 16435번 스네이크버드 문제 풀이입니다. https://www.acmicpc.net/problem/16435 16435번: 스네이크버드 첫 번째 줄에 과일의 개수 N (1 ≤ N ≤ 1,000) 과 스네이크버드의 초기 길이 정수 L (1 ≤ L ≤ 10,000) 이 주어집니다. 두 번째 줄에는 정수 h1, h2, ..., hN (1 ≤ hi ≤ 10,000) 이 주어집니다. www.acmicpc.net n, l = map(int, input().split()) fruit = list(map(int, input().split())) fruit.sort() for i in range(len(fruit)) : if l >= fruit[i] : l += 1 print(l) 1. 반복문을..

백준(Python) 9237번 이장님 초대 풀이

Python으로 구현한 9237번 이장님 초대 문제 풀이입니다. https://www.acmicpc.net/problem/9237 9237번: 이장님 초대 입력은 두 줄로 이루어져 있다. 첫째 줄에는 묘목의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄에는 각 나무가 다 자라는데 며칠이 걸리는지를 나타낸 ti가 주어진다. (1 ≤ ti ≤ 1,000,000) www.acmicpc.net n = int(input()) data = list(map(int, input().split())) data.sort(reverse=True) for i in range(n) : data[i] = data[i] + i + 1 print(max(data) + 1) 1. 이장님을 최대한 빨리 초대하기 위해 나무..

백준(Python) 1343번 폴리오미노 풀이

Python으로 구현한 1343번 폴리오미노 문제 풀이입니다. https://www.acmicpc.net/problem/1343 1343번: 폴리오미노 첫째 줄에 사전순으로 가장 앞서는 답을 출력한다. 만약 덮을 수 없으면 -1을 출력한다. www.acmicpc.net board = input() board = board.replace('XXXX', 'AAAA') board = board.replace('XX', 'BB') if 'X' in board : print(-1) else : print(board) 1. 단순히 문자를 치환하는 문제로, 문자열 board에서 'XXXX'가 있다면 'AAAA'로 갱신한다. 2. 문자열 board에서 'XX'가 있다면 'BB'로 갱신한다. 3. 최종적으로 문자열 bo..

백준(Python) 15904번 UCPC는 무엇의 약자일까? 풀이

Python으로 구현한 15904번 UCPC 문제 풀이입니다. https://www.acmicpc.net/problem/15904 15904번: UCPC는 무엇의 약자일까? 첫 번째 줄에 알파벳 대소문자, 공백으로 구성된 문자열이 주어진다. 문자열의 길이는 최대 1,000자이다. 문자열의 맨 앞과 맨 끝에 공백이 있는 경우는 없고, 공백이 연속해서 2번 이상 주어지는 www.acmicpc.net s = input() data = ['U', 'C', 'P', 'C'] flag = True for i in range(4) : if data[i] in s : flag = True index = s.find(data[i]) s = s[index+1::] else : flag = False break if fla..

백준(Python) 1439번 뒤집기 풀이

Python으로 구현한 1439번 뒤집기 문제 풀이입니다. https://www.acmicpc.net/problem/1439 1439번: 뒤집기 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모 www.acmicpc.net s = input() change_0 = 0 change_1 = 0 if s[0] == '0' : change_1 += 1 else : change_0 += 1 for i in range(len(s) - 1) : if s[i] != s[i+1] : if s[i+1] == '0' : change_1 += 1 else : change_0 +=..