그리디 알고리즘, 정렬
강민이가 초등학교 3학년일 때, 담임선생님이 이런 문제를 냈었다.
숫자 1, 2, 7, 8, 9 를 사용해서 만든 두 숫자를 더했을 때, 나올 수 있는 가장 작은 수는 무엇일까요?
강민이는 이 문제의 답이 207(78 + 129)이라고 생각했다. 그런데 선생님은 책 4페이지에 있는 비슷한 문제를 모두 풀어오라는 숙제를 내셨다.
작년부터 프로그래밍을 시작한 강민이는 이런 숙제보다 코딩을 더 재밌어했다. 그래서 강민이는 이 숙제를 코딩으로 해결하기로 했다!
어린 강민이를 위해 코딩을 도와주자.
한 줄에 하나씩 연습문제가 주어진다.
각 줄에서 첫 번째로 나오는 정수 N (2 ≤ N ≤ 14) 은 연습문제에서 사용될 숫자의 개수이다.
두 번째부터 사용될 N개의 숫자가 주어진다. 0이 아닌 수가 최소 2개 이상 존재한다
마지막 줄에 0을 입력하면 프로그램이 종료된다.
각 연습문제마다 정답을 출력한다.
코드
while True:
arr = input().split()
if arr[0] == '0':
break
n = int(arr[0])
nums = sorted(arr[1:])
num1 = ''
num2 = ''
for i in range(n):
if nums[i] != '0': # 0이 아닌 시작지점
num1 = nums[i]
num2 = nums[i+1]
nums = nums[:i] + nums[i+2:]
break
for i in range(len(nums)):
if i%2 == 0:
num1 += nums[i]
else:
num2 += nums[i]
print(int(num1) + int(num2))
'알고리즘 > 백준' 카테고리의 다른 글
[Silver II] 쇠막대기 - 10799 (python) (1) | 2024.07.03 |
---|---|
[Silver II] 미로 탈출 - 31834 (python) (0) | 2024.07.03 |
[Silver III] 등수 매기기 - 2012 (python) (0) | 2024.07.02 |
[Silver II] 방탈출 - 15729 (python) (0) | 2024.07.02 |
[Silver II] 주식 - 11501 (python) (0) | 2024.07.02 |