공부 기록장
[백준 - Python] 2231. 분해합 (완전 탐색) 본문
https://www.acmicpc.net/problem/2231
코드
n = int(input())
result = 0
for num in range(1, 1000001):
gen = num
nn = num
while nn > 0:
x = nn % 10
nn //= 10
gen += x
if gen == n:
result = num
break
print(result)
처음의 풀이는 위와 같이
각 자리 수의 합을 구하는 과정을
반복문을 또 돌면서, 한 자리씩 떼어주는 과정을 거쳤다.
다른 분들의 코드를 살펴보다가
자리 수의 합을 구하는 코드가 간결화 된 코드가 있었고
기억해두면 유용할 것 같다.
n = int(input())
result = 0
for i in range(1, n+1):
num = sum(map(int, str(i))) + i
if num == n:
result = i
break
print(result)
정수를 문자열로 변환하여 iterable 객체로 만들고
map함수를 이용해 iterable의 각 요소를 정수로 형 변환하여
sum 함수로 간단하게 자리 수를 더해줄 수 있다.
'코딩 테스트 > 백준 문제 풀이' 카테고리의 다른 글
[백준 - Python] 7568. 덩치 (완전 탐색) (0) | 2024.01.28 |
---|---|
[백준 - Python] 1018. 체스판 다시 칠하기 (완전 탐색) (0) | 2024.01.28 |
[백준 - Python] 2798. 블랙잭 (완전 탐색) (0) | 2024.01.27 |
백준 1753. 최단 경로 (0) | 2024.01.23 |
백준 11404. 플로이드 (0) | 2024.01.23 |