시작하며...
모든 알고리즘 문제 풀이는 제가 직접 짜서 정답을 맞춘 결과만을 공유합니다.
마지막 'More Solution'은 다른 정답자들 풀이 중 생각지 못했던 부분들이나 좋게 느껴진 풀이법 몇개를 가져와서 공유하였습니다.
[Level 1] 자릿수 더하기
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.
제한사항
- N의 범위 : 100,000,000 이하의 자연수
입출력 예
![](https://blog.kakaocdn.net/dn/dynnxr/btrUgdZgrSF/ub90D7JWqYIv1RkcganpE1/img.png)
입출력 예 설명
입출력 예 #1
문제의 예시와 같습니다.
입출력 예 #2
9 + 8 + 7 = 24이므로 24를 return 하면 됩니다.
My Solution
def solution(n):
# answer = 0
# for i in list(str(n)):
# answer += int(i)
# return answer
return sum([int(i) for i in str(n)])
주석문을 먼저 작성하고 List Comprehension으로 변환했다. 아직 List Comprehension이 익숙하지 않아서 바로 구조가 나오질 않는다...
자연수 n 을 문자열로 바꾼 후 리스트로 바꾸면 자릿수가 따로 리스트의 각 인덱스에 담기게 된다. 그것을 반복문으로 돌려서 하나씩 합쳐주도록 구현하였다.
List Comprehension으로는 문자열 자체를 for문을 돌려서 int 타입으로 변환 후 리스트에 담고 Sum 함수를 이용해 자릿수 합을 구하였다.
More Solution
def sum_digit(number):
if number < 10:
return number;
return (number % 10) + sum_digit(number // 10)
재귀구조가 아직 낯설고 신기해서 가져와보았다.
자릿수가 한자리면 바로 리턴을 하고 자릿수가 더 있을 경우는 10씩 나누어주면서 재귀구조로 구현된 풀이이다.
출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges
'Algorithm > Programmers' 카테고리의 다른 글
[Algorithm] 프로그래머스 - 핸드폰 번호 가리기 (0) | 2022.12.23 |
---|---|
[Algorithm] 프로그래머스 - 콜라츠 추측 (0) | 2022.12.23 |
[Algorithm] 프로그래머스 - 짝수와 홀수 (0) | 2022.12.22 |
[Algorithm] 프로그래머스 - 평균 구하기 (0) | 2022.12.22 |
[Algorithm] 프로그래머스 - 직사각형 별찍기 (2) | 2022.12.22 |
댓글