[BOJ] 9440 숫자 더하기 바로가기
강민이가 초등학교 3학년일 때, 담임선생님이 이런 문제를 냈었다.
숫자 1, 2, 7, 8, 9 를 사용해서 만든 두 숫자를 더했을 때, 나올 수 있는 가장 작은 수는 무엇일까요?
강민이는 이 문제의 답이 207(78 + 129)이라고 생각했다. 그런데 선생님은 책 4페이지에 있는 비슷한 문제를 모두 풀어오라는 숙제를 내셨다.
작년부터 프로그래밍을 시작한 강민이는 이런 숙제보다 코딩을 더 재밌어했다. 그래서 강민이는 이 숙제를 코딩으로 해결하기로 했다!
어린 강민이를 위해 코딩을 도와주자.
한 줄에 하나씩 연습문제가 주어진다.
각 줄에서 첫 번째로 나오는 정수 N (2 ≤ N ≤ 14) 은 연습문제에서 사용될 숫자의 개수이다.
두 번째부터 사용될 N개의 숫자가 주어진다. 0이 아닌 수가 최소 2개 이상 존재한다
마지막 줄에 0을 입력하면 프로그램이 종료된다.
각 연습문제마다 정답을 출력한다.
✍ 코드
from sys import stdin
while True:
N = list(map(int,stdin.readline().split()))
if N[0] == 0: # 프로그램 종료
break
N = sorted(N[1:]) # 정렬
A, B = "", "" # 두 숫자 문자열
zeroCount = 0 # 0의 갯수
TF = True
for num in N:
if num == 0: # 0일 경우
zeroCount += 1 # 0의 갯수 + 1
continue # 다음 반복문 시작
# 각 숫자 문자열에 값을 차례로 추가
if TF:
A += str(num)
TF = False
else:
B += str(num)
TF = True
for _ in range(zeroCount): # 0의 갯수에 맞추어 각 수의 두번째 자리에 0 추가
if len(A) == len(B):
A = A[0] + '0' + A[1:]
else:
B = B[0] + '0' + B[1:]
print(int(A)+int(B))