코드가 너무 긴거보니 최적화는 한참 멀었다.
그래도 일단 처음 생각한 풀이법을 막힘없이 구현해냈음에 기뻐하자
다소 허무할 수 있는게
아래와 같이 일반적으로 더해서 출력해도 시간초과가 되지 않는다.
그럼에도 어떻게 sum의 성능을 개선할 수 있을지 고민해봤다는 점에서
의미가 있었다고 본다.
큰 수에 대한 sum이나 단순 플러스연산의
시간 소요가 오래걸리는 점을 어떻게 개선할것인지 직접 구현해보는 문제로 보인다.
나는 A와 B를 각각 리스트로 저장하되
자리수에 따라 큰 자리수와 작은 자리수 값의 자리수 차만큼
작은 자리수의 리스트 맨 앞에 0을 삽입해주는 작업을 먼저 했다.
이제 Alist와 Blist의 각 자리간의 연산결과를 sumList에 저장해주고
sumList에 저장된 값이 10보다 클 경우,
해당 자리에 저장된 값을 10으로 나눈 나머지를 바로 앞의 인덱스값에다가 더해주기를
sumList index의 내림차순으로 실행했다.
자세한 코드는 아래에
A,B= map(str, input().split())
L = abs(len(A) - len(B))
if len(A) > len(B) :
Alist = list(A)
Blist = [0 for i in range(L)]
Blist.extend(B)
else :
Blist = list(B)
Alist = [0 for i in range(L)]
Alist.extend(A)
Alist = list(map(int,Alist))
Blist = list(map(int,Blist))
#
Higher = Alist if len(A)>len(B) else Blist
sumList = list()
for i in range(1,len(Alist)+1) :
sumList.insert(0,Alist[len(Alist) - i] +Blist[len(Blist) - i])
for i in range(1,len(sumList)) :
if sumList[len(sumList)-i] >= 10 :
sumList[len(sumList)-i-1] += sumList[len(sumList)-i] // 10
sumList[len(sumList)-i] = sumList[len(sumList)-i] % 10
print( int( ''.join( list( map( str, sumList)))))