알고리즘/백준

[Silver II] 숫자 더하기 - 9440 (python)

KimMinGyun 2024. 7. 2. 17:24

문제 링크

 

 

분류

그리디 알고리즘, 정렬

 

문제 설명

강민이가 초등학교 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))