본문 바로가기

알고리즘 공부

두 정수형 배열을 10진수 값으로 더하기

728x90
def arrayToIntValue(arr):
  mutableScale = 1
  result = 0
  for value in reversed(arr):
    result += value * mutableScale
    mutableScale *= 10
  return result

def addToArray(arr1, arr2):
  return arrayToIntValue(arr1) + arrayToIntValue(arr2)
  
print(addToArray([1,2,5,5] , [3,4,5]))

# 출력결과 1600

처음에는 배열의 숫자를 하나씩 빼서 문자열로 붙였다가 StandardLibrary에서 제공해줄지도 모르는 캐스팅을 사용해서 숫자로 만들어야 하나 싶었는데, 조금 더 생각해보니 언젠가 웹서칭하다가 봤던 문제였던걸 떠올렸다. 

 

뒷자리부터 십진수로 바꿔주기 위해 arrayToIntValue함수를 만들었다.

[1,2,5,5]의 경우 1의 자리인 맨뒤 5에 1을 곱하고 그 전 숫자인 5에는 10 , 그 전 숫자 2엔 100, 그 앞엔 1000 을 곱한다.

[1,2,5,5]는 1255의 숫자로 변환되고  [3,4,5]는 345로 변환되었다.

 

addToArray에서는 변환된 두 숫자를 더하여 return하도록 한다. 

결과 1600이 출력되도록 했다.

 

이 과정에서는 파이썬의 List타입의 맨 뒤부터 값을 가져오는 방법을 몰라서 검색함. 

728x90

'알고리즘 공부' 카테고리의 다른 글

재귀를 사용한 팩토리얼, 피보나치 구현  (0) 2021.09.08
k번째로 작은 수  (0) 2021.09.08
백준 2530: 인공지능 시계  (0) 2021.09.06