본문 바로가기

분류 전체보기166

[그리디] 만들 수 없는 금액 (파이썬) N개의 동전을 이용하여 만들 수 없는 양의 정수 금액 중 최솟값을 구하는 프로그램을 작성하세요. n = int(input()) coins = list(map(int, input().split())) coins.sort() print(min(coins)) result = 0 if min(coins) != 1: result = 1 elif min(coins) == 1: coin = coins[:n-1:] i = 0 sum = 0 while i= 2: result = sum + 1 elif p == 1: result = max(coins) + 1 print(result) 1. 가지고 있는 코인들 중 가장 적은 수가 1보다 크다면, 만들 수 없는 최소 금액은 '1' 2. 가지고 있는 코인들 중 가장 적은 수가 .. 2022. 7. 16.
[그리디] 문자열 뒤집기 (파이썬) 0과 1로만 이루어진 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 할 수 있는 행동은 연속된 하나 이상의 숫자를 잡고 모두 뒤집는 것이다. (1을 0으로 또는 0을 1로) 해야 하는 행동의 최소 횟수를 구하세요. s = list(input()) cnt = 0 print(s) #1 뭉텡이 cnt_1 = 0 #0 뭉텡이 cnt_0 = 0 if s[0] == '1' : cnt_1 += 1 elif s[0] == '0' : cnt_0 += 1 i=0 for i in range(len(s)-1): if s[i] != s[i+1]: if s[i+1] == '1': cnt_0 += 1 elif s[i+1] == '0': cnt_1 += 1 print(cnt_1, cnt_0) print(min(cnt_1,.. 2022. 7. 16.
[그리디] 곱하기 혹은 더하기 (파이썬) 각 자리가 숫자로만 이루어진 문자열 S가 주어졌을 때, 왼쪽부터 오른쪽으로 하나씩 모든 숫자를 확인하며 숫자 사이에 'X' 또는 '+' 연산자를 넣어 결과적으로 만들어질 수 있는 가장 큰 수를 구하는 프로그램을 작성하세요. 단, 모든 연산은 왼쪽에서부터 순서대로 이루어진다고 가정한다. s = input() #배열에 넣기 s = list(s) arr = list(map(int,s)) result = arr[0] i = 1 while i < len(arr): if result == 0 or arr[i] == 0: result += arr[i] i += 1 elif result != 0 and arr[i] != 0: result *= arr[i] i += 1 elif arr[i] == 1: result += .. 2022. 7. 16.
[그리디] 모험가 길드 (파이썬) 모험가 N명 공포도 X 공포도 X인 모험가 -> X명 이상인 그룹에 참가 최대 몇개의 그룹? (모든 모험가를 특정한 그룹에 넣을 필요는 없음) #모험가 수 n = int(input()) #각 모험가의 공포도 x = list(map(int, input().split())) #가장 공포도 높은 사람부터 그룹 구성 #공포도 높은 순으로 정렬 x.sort(reverse=True) #그룹 수 group = 0 i = 0 print(x) while x[i] 2022. 7. 16.