[Silver III] 숫자 더하기 - 9440
분류
그리디 알고리즘, 정렬
문제 설명
강민이가 초등학교 3학년일 때, 담임선생님이 이런 문제를 냈었다.
숫자 1, 2, 7, 8, 9 를 사용해서 만든 두 숫자를 더했을 때, 나올 수 있는 가장 작은 수는 무엇일까요?
강민이는 이 문제의 답이 207(78 + 129)이라고 생각했다. 그런데 선생님은 책 4페이지에 있는 비슷한 문제를 모두 풀어오라는 숙제를 내셨다.
작년부터 프로그래밍을 시작한 강민이는 이런 숙제보다 코딩을 더 재밌어했다. 그래서 강민이는 이 숙제를 코딩으로 해결하기로 했다!
어린 강민이를 위해 코딩을 도와주자.
입력
한 줄에 하나씩 연습문제가 주어진다.
각 줄에서 첫 번째로 나오는 정수 N (2 ≤ N ≤ 14) 은 연습문제에서 사용될 숫자의 개수이다.
두 번째부터 사용될 N개의 숫자가 주어진다. 0이 아닌 수가 최소 2개 이상 존재한다
마지막 줄에 0을 입력하면 프로그램이 종료된다.
출력
각 연습문제마다 정답을 출력한다.
import sys
input = sys.stdin.readline
while True:
numbers = list(map(int, input().split()))
if numbers[0] == 0:
break
else:
numbers = sorted(numbers[1:])
zero = numbers.count(0)
numbers = numbers[zero:]
a = ""
b = ""
for i in range(len(numbers)):
if i % 2 == 0:
a += str(numbers[i])
else:
b += str(numbers[i])
z_a = zero // 2
z_b = zero // 2
if len(a) > len(b):
z_b += zero % 2
else:
z_a += zero % 2
a = a[0] + ("0" * z_a) + a[1:]
b = b[0] + ("0" * z_b) + b[1:]
result = int(a) + int(b)
print(result)
'Algorithm > BAEKJOON' 카테고리의 다른 글
[백준 / Python 파이썬] 4848번 - 집합 숫자 표기법 (0) | 2023.08.06 |
---|---|
[백준 / Python 파이썬] 3758번 - KCPC (0) | 2023.07.18 |
[백준 / Python 파이썬] 27922번 - 현대모비스 입사 프로젝트 (0) | 2023.07.18 |
[백준 / Python 파이썬] 23351번 - 물 주기 (0) | 2023.07.16 |
[백준 / Python 파이썬] 23082번 - 균형 삼진법 (0) | 2023.07.16 |