그리디 알고리즘 74

백준(Python) 18787번 Mad Scientist 풀이

Python으로 구현한 18787번 Mad Scientist 문제 풀이입니다. https://www.acmicpc.net/problem/18787 18787번: Mad Scientist First, FJ can transform the substring that corresponds to the first character alone, transforming $B$ into GHGGGHH. Next, he can transform the substring consisting of the third and fourth characters, giving $A$. Of course, there are other combinations of t www.acmicpc.net n = int(input()) a = ..

백준(Python) 1817번 짐 챙기는 숌 풀이

Python으로 구현한 1817번 짐 챙기는 숌 문제 풀이입니다. https://www.acmicpc.net/problem/1817 1817번: 짐 챙기는 숌 첫째 줄에 책의 개수 N과 박스에 넣을 수 있는 최대 무게 M이 주어진다. N은 0보다 크거나 같고 50보다 작거나 같은 정수이고, M은 1,000보다 작거나 같은 자연수이다. N이 0보다 큰 경우 둘째 줄에 책 www.acmicpc.net n, m = map(int, input().split()) if n == 0 : print(0) else : data = list(map(int, input().split())) target = 0 result = 1 for i in range(n-1, -1, -1) : target += data[i] if t..

백준(Python) 6550번 부분 문자열 풀이

Python으로 구현한 6550번 부분 문자열 문제 풀이입니다. https://www.acmicpc.net/problem/6550 6550번: 부분 문자열 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문자열 s 와 t가 빈칸을 사이에 두고 들어온다. s와 t의 길이는 10만을 넘지 않는다. www.acmicpc.net while True : try : s, t = input().split() value = 0 flag = 0 for i in range(len(t)) : if t[i] == s[value] : value += 1 if value == len(s) : flag = 1 break if flag == 1 : print('Yes') else : ..

백준(Python) 11256번 사탕 풀이

Python으로 구현한 11256번 사탕 문제 풀이입니다. https://www.acmicpc.net/problem/11256 11256번: 사탕 당신은 사탕 공장의 주인이다. 날마다, 당신은 J개의 사탕을 가게에 보내기 위해 상자에 포장해야 한다. 당신은 크기가 다른 상자 N개를 가지고 있다. 당신은 편리를 위해 상자를 최소한으로 쓰 www.acmicpc.net t = int(input()) for _ in range(t) : j, n = map(int, input().split()) data = [] for _ in range(n) : a, b = map(int, input().split()) data.append(a*b) data.sort(reverse=True) result = 0 for i in..

백준(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. 반복문을..