백준10757 큰수 A+B in Python

horiz.d·2021년 11월 16일
0

총평

코드가 너무 긴거보니 최적화는 한참 멀었다.
그래도 일단 처음 생각한 풀이법을 막힘없이 구현해냈음에 기뻐하자

다소 허무할 수 있는게

아래와 같이 일반적으로 더해서 출력해도 시간초과가 되지 않는다.
그럼에도 어떻게 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)))))
profile
가용한 시간은 한정적이고, 배울건 넘쳐난다.

0개의 댓글