그리디 알고리즘 74

백준(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 +=..

백준(Python) 4796번 캠핑 풀이

Python으로 구현한 4796번 캠핑 문제 풀이입니다. https://www.acmicpc.net/problem/4796 4796번: 캠핑 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, L, P, V를 순서대로 포함하고 있다. 모든 입력 정수는 int범위이다. 마지막 줄에는 0이 3개 주어진다. www.acmicpc.net case_number = 1 while True : l, p, v = map(int, input().split()) if l == p == v == 0 : break value = v // p result = l * value result += min((v%p), l) print('Case %d: %d' % (case_number, r..

백준(Python) 15720번 카우버거 풀이

Python으로 구현한 15720번 카우버거 문제 풀이입니다. https://www.acmicpc.net/problem/15720 15720번: 카우버거 첫째 줄에는 주문한 버거의 개수 B, 사이드 메뉴의 개수 C, 음료의 개수 D가 공백을 사이에 두고 순서대로 주어진다. (1 ≤ B, C, D ≤ 1,000) 둘째 줄에는 각 버거의 가격이 공백을 사이에 두고 주어진 www.acmicpc.net b, c, d = map(int, input().split()) burger = list(map(int, input().split())) side = list(map(int, input().split())) drink = list(map(int, input().split())) burger.sort(reverse..

백준(Python) 14655번 욱제는 도박쟁이야!! 풀이

Python으로 구현한 14655번 욱제는 도박쟁이야!! 문제 풀이입니다. https://www.acmicpc.net/problem/14655 14655번: 욱제는 도박쟁이야!! 첫째 줄에 동전의 수 N이 주어진다. (1 ≤ N ≤ 10,000) 둘째 줄에 욱제의 첫 번째 라운드의 N개 동전의 배열이 주어진다. 셋째 줄에 욱제의 두 번째 라운드의 N개 동전의 배열이 주어진다. 동전에 적 www.acmicpc.net n = int(input()) first = list(map(int, input().split())) second = list(map(int, input().split())) result = 0 for i in range(len(first)) : result += abs(first[i]) fo..

백준(Python) 15881번 Pen Pineapple Apple Pen 풀이

Python으로 구현한 15881번 Pen Pineapple Apple Pen 문제 풀이입니다. https://www.acmicpc.net/problem/15881 15881번: Pen Pineapple Apple Pen 여러 개의 사과, 파인애플, 그리고 펜이 일렬로 세워져 있다. 이 물건들의 순서를 바꾸지 않고 옆에 있는 물건끼리 연결했을 때, 펜-파인애플-애플-펜을 몇 개나 만들 수 있을지 세어보자. 단, 펜, www.acmicpc.net n = int(input()) data = input() result = 0 i = 0 while i

백준(Python) 1434번 책 정리 풀이

Python으로 구현한 1434번 책 정리 문제 풀이입니다. https://www.acmicpc.net/problem/1434 1434번: 책 정리 첫째 줄에 박스의 개수 N, 책의 개수 M이 주어진다. 둘째 줄에는 박스의 용량 A1, A2, ..., AN이 주어지고, 셋째 줄에는 B1, B2, ..., BM이 주어진다. www.acmicpc.net n, m = map(int, input().split()) box = list(map(int, input().split())) book = list(map(int, input().split())) for i in range(len(book)) : for j in range(len(box)) : if book[i] > box[j] : continue box[j..

백준(Python) 18228번 펭귄추락대책위원회 풀이

Python으로 구현한 18228번 펭귄추락대책위원회 문제 풀이입니다. https://www.acmicpc.net/problem/18228 18228번: 펭귄추락대책위원회 일우는 친구들과 펭귄 얼음깨기 게임을 하고 있다. 계속 떨어지는 펭귄이 불쌍했던 일우는 INU 송년 코드페스티벌 참가자들을 펭귄추락대책위원회로 초대했다. 이 펭귄 얼음깨기는 리메이크 www.acmicpc.net n = int(input()) data = list(map(int, input().split())) index = 0 for i in range(len(data)) : if data[i] == -1 : index = i break print(min(data[:index:]) + min(data[index+1::])) 1. 펭귄이..