본문 바로가기
개발/SWEA (D1) 문제 풀이

SW Expert Academy - 2058. 자릿수 더하기(D1)

by v너굴이v 2022. 11. 11.

출처 - https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=1&contestProbId=AV5QPRjqA10DFAUq&categoryId=AV5QPRjqA10DFAUq&categoryType=CODE&problemTitle=&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=1&pageSize=10&pageIndex=1

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

<나의 풀이>

입력값은 하나의 자연수이다.

이때 각 자릿수의 합을 계산하는 문제이다.

어렵게 나온다면 주어지는 입력값의 범위가 없을 텐데, 다행히 1부터 9999까지이다.

 

수학적으로 풀이를 할지 문법적으로 풀이를 할지 고민이 된다.

먼저 수학적으로 푼다면, 자릿수를 10, 100, 1000의 배수로 나누는 방법.

문법적으로 푼다면, 입력받은 수를 문자열로 변경해서 추출하는 방법?

더 좋은 방법이 있을까 고민해보자.

우선 항상 1000 이상의 수가 입력된다는 보장이 없다.

물론 테스트 케이스에서 주어지는 것은 1000이상이지만, 이번에는 좀 더 디테일한 설계를 해보고 싶다.

 

입력받는 N의 [0]부터 하나씩 꺼내고 이를 더하는 코드를 작성해보자

N = input()
for i in N:
    print(i)

N이 문자열로 취급되기 때문에 이것의 결과물은 다음과 같다.

6
7
8
9

이들의 자료형은 모두 str이다.

따라서 더하기 연산을 하기 위해서는 int()를 사용해줘야 한다.

여기서 sum이라는 변수를 전역으로 선언하고, for문 안에서 돌아가는 i를 sum에 더해주는 방식을 선택해 보자.

N = input()
sum = 0
for i in N:
    sum += int(i)
print(sum)

이렇게하면 정상적으로 결과물이 출력된다.

 

처음에 생각했던 것과 다르게 10000을 넘어가는 수를 입력해도 정상적으로 계산이 가능하다.

연산 안에서 int()를 사용하는 것이 깨끗하지는 않아 찝찝하지만, 간단하게 풀어냈다!

 

댓글