그리디 알고리즘 74

백준(Python) 18238번 ZOAC 2 풀이

Python으로 구현한 18238번 ZOAC 2 문제 풀이입니다. https://www.acmicpc.net/problem/18238 18238번: ZOAC 2 2019년 12월, 두 번째로 개최된 ZOAC의 오프닝을 맡은 성우는 누구보다 화려하게 ZOAC를 알리려 한다. 작년 ZOAC의 방식은 너무 식상하다고 생각한 성우는 문자열을 보여주는 새로운 규칙을 고안해 www.acmicpc.net data = list(input()) start = 'A' result = 0 for i in data : left_value = ord(start) - ord(i) right_value = ord(i) - ord(start) if left_value < 0 : left_value += 26 elif right_va..

백준(Python) 14487번 욱제는 효도쟁이야!! 풀이

Python으로 구현한 14487번 욱제는 효도쟁이야!! 문제 풀이입니다. https://www.acmicpc.net/problem/14487 14487번: 욱제는 효도쟁이야!! 욱제는 KOI를 망친 기념으로 부모님과 함께 코드게이트 섬으로 여행을 떠났다. 코드게이트 섬에는 오징어로 유명한 준오마을(심술쟁이 해커 임준오 아님), 밥으로 유명한 재훈마을, 영중마을 등 www.acmicpc.net n = int(input()) data = list(map(int, input().split())) data.sort() print(sum(data[:n-1:])) 1. n개의 이동비용을 입력받아 리스트 형태로 구성하여 data에 저장한다. 2. 최소한의 이동비용을 구해야하므로 data 리스트를 오름차순으로 정렬한..

백준(Python) 2810번 컵홀더 풀이

Python으로 구현한 2810번 컵홀더 문제 풀이입니다. https://www.acmicpc.net/problem/2810 2810번: 컵홀더 첫째 줄에 좌석의 수 N이 주어진다. (1 ≤ N ≤ 50) 둘째 줄에는 좌석의 정보가 주어진다. www.acmicpc.net n = int(input()) data = input() result = 0 number = 0 flag = 0 while n > number : result += 1 if data[number] == 'L' : number += 2 flag = 1 else : number += 1 if flag == 1 : result += 1 print(result) 1. 반복문을 통해 입력받은 문자열의 문자를 하나씩 확인한다. 2. 하나의 문자를 ..

백준(Python) 22864번 피로도 풀이

Python으로 구현한 22864번 피로도 문제 풀이입니다. https://www.acmicpc.net/problem/22864 22864번: 피로도 첫 번째 줄에 $A$, $B$, $C$, $M$이 공백으로 구분되어 주어진다. (하루는 24시간이다.) 맨 처음 피로도는 0이다. www.acmicpc.net a, b, c, m = map(int, input().split()) day = 0 result = 0 count = 0 if a > m : print(0) else : while day != 24 : day += 1 if count + a = 0 : count -= c else : count = 0 print(result) 1. 초기 피로도는 0이며, 피로도(a)가 번아웃 경계(m)보다 클 경우 일..

백준(Python) 11034번 캥거루 세마리2 풀이

Python으로 구현한 11034번 캥거루 세마리2 문제 풀이입니다. https://www.acmicpc.net/problem/11034 11034번: 캥거루 세마리2 여러개의 테스트 케이스로 이루어져 있으며, 세 캥거루의 초기 위치 A, B, C가 주어진다. (0 < A < B < C < 100) www.acmicpc.net while True : try : a, b, c = map(int, input().split()) result = max(b - a, c - b) print(result - 1) except : break 1. 여러개의 테스트 케이스로 이루어지므로 try ~ except 를 통해 코드를 구성한다. 2. a, b, c를 정수형으로 입력받고, 바깥쪽의 캥거루 중 한 마리가 다른 두 캥..

백준(Python) 14720번 우유 축제 풀이

Python으로 구현한 14720번 우유 축제 문제 풀이입니다. https://www.acmicpc.net/problem/14720 14720번: 우유 축제 영학이는 딸기우유, 초코우유, 바나나우유를 좋아한다. 입맛이 매우 까다로운 영학이는 자신만의 우유를 마시는 규칙이 있다. 맨 처음에는 딸기우유를 한 팩 마신다. 딸기우유를 한 팩 마신 후 www.acmicpc.net n = int(input()) data = list(map(int, input().split())) number = 0 result = 0 for i in range(len(data)) : if data[i] == number : result += 1 number += 1 if number > 2 : number = 0 print(res..

백준(Python) 1789번 수들의 합 풀이

Python으로 구현한 1789번 수들의 합 문제 풀이입니다. https://www.acmicpc.net/problem/1789 1789번: 수들의 합 첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다. www.acmicpc.net s = int(input()) result = 0 n = 1 while True : result += n if result > s : n -= 1 break n += 1 print(n) 반복문을 수행하는데, 그 내부에서는 n을 1부터 시작하여 result에 누적해간다. 누적한 result 값이 입력받은 s보다 클 경우 n을 1빼준 뒤 반복문을 종료하고 n을 출력한다. 그렇지 않다면 n을 1씩 증가시켜 반복문을 계속해서 수행한다.

백준(Python) 10162번 전자레인지 풀이

Python으로 구현한 10162번 전자레인지 문제 풀이입니다. https://www.acmicpc.net/problem/10162 10162번: 전자레인지 3개의 시간조절용 버튼 A B C가 달린 전자레인지가 있다. 각 버튼마다 일정한 시간이 지정되어 있어 해당 버튼을 한번 누를 때마다 그 시간이 동작시간에 더해진다. 버튼 A, B, C에 지정된 시간은 www.acmicpc.net t = int(input()) if t % 10 != 0 : print(-1) else : a = t // 300 b = (t%300) // 60 c = (t%300) % 60 // 10 print(a, b, c) 입력받은 t를 10으로 나눈 값이 0이 아닐 경우 제시된 3개의 버튼으로 t초를 맞출 수 없으므로 -1을 출력하..

백준(Python) 1026번 보물 풀이

Python으로 구현한 1026번 보물 문제 풀이입니다. https://www.acmicpc.net/problem/1026 1026번: 보물 첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거 www.acmicpc.net n = int(input()) a = list(map(int, input().split())) b = list(map(int, input().split())) result = 0 for i in range(n) : result += min(a) * max(b) a.pop(a.index(min(a))) b.pop(b.index(max(..