10757
10757
https://www.acmicpc.net/problem/10757
단순한 생각
- 가장 단순하면서도 파이썬스러운 방식으로 다음과 같이 구현할 수 있다
- 파이썬은 임의의 아주 큰 정수 저장을 지원하기 때문에, 문제없이 문제를 풀 수 있다
- Java에서는 상상도 못할 일…
import sys
a, b = map(int, sys.stdin.readline().split())
print(A + B)
list로 구현해 보기
- 다음과 같이 문자열을 이용해 구현 가능
- 입력 받은 숫자를 String list로 변경 후, 각 자릿수끼리 더하면 됨
- 만약 한 숫자가 다른 숫자보다 자릿수가 작다면, 자릿수를 초과할 때는 0을 더해주면 됨
- 아랫 자리수부터 더해서, 더한 결과를 list에 append로 저장
- 당연하지만
insert(0, x)
는 O(N)이므로, 사용이 지양됨 - 이 경우 원래 자릿수의 역순으로 저장되므로, 출력도 역순으로 하면 됨
- 당연하지만
- 데이터 전체를 숫자로 저장하지 않고도 연산이 가능
import sys
a, b = map(list, sys.stdin.readline().split())
idx_a = len(a) - 1
idx_b = len(b) - 1
sumList = []
over = 0
while idx_a >= 0 or idx_b >= 0:
cur_a = int(a[idx_a]) if idx_a >= 0 else 0
cur_b = int(b[idx_b]) if idx_b >= 0 else 0
cur_sum = cur_a + cur_b + over
if cur_sum > 9:
cur_sum -= 10
over = 1
else:
over = 0
sumList.append(cur_sum)
idx_a -= 1
idx_b -= 1
if over == 1:
sumList.append(over)
for i in range(len(sumList) - 1, -1, -1):
print(sumList[i], end="")
기타
파이썬 언어 적응을 위해 시작, 당분간은 문제 풀이 위주로 할 예정