티스토리 뷰
https://www.acmicpc.net/problem/2231
2231번: 분해합
어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이
www.acmicpc.net
👩💻문제 이해
N의 생성자는 N보다는 작지만 N+(각 자리 수의 합) 이므로 0부터 하나씩 확인 하는 것보다 N부터 1씩 줄어들며 확인하는 것이 나을 것이라 생각했다.
👩💻reversed(N)을 범위로 하는 반복문 사용 : 성공🌈
n = int(input())
res = []
for i in reversed(range(n)):
sum = 0
sum += i
for j in range(len(str(i))):
sum += int(str(i)[j])
if sum == n :
res.append(i)
if len(res) == 0:
print(0)
else:
print(res[len(res)-1])
n = int(input())
res = []
for i in reversed(range(n)):
# N-1부터 1씩 줄어들며 반복
sum = 0
sum += i
# 숫자 + 각 자리의 숫자
for j in range(len(str(i))):
sum += int(str(i)[j])
# 각 자리의 숫자를 더해준다
if sum == n :
res.append(i)
# 숫자 + 각 자리의 숫자가 입력받은 수 n과 같아지면 생성자 i를 res 리스트에 추가
if len(res) == 0:
print(0)
else:
print(res[len(res)-1])
# 큰 수부터 판별하기 때문에 가장 작은 생성자는 리스트의 마지막에 존재한다.
✨Point✨
반복문에서 내림차순으로 반복하는 법!
1. reversed 사용
ex) for i in reversed(range(10)):
2. for문에 직접 입력
ex) for i in range(10,0,-1):
결과비교
'🦖 Programming > Python' 카테고리의 다른 글
[Python] 백준 알고리즘 1436번 : 영화감독 숌 (0) | 2022.09.08 |
---|---|
[Python] 백준 알고리즘 7568번 : 덩치 (0) | 2022.09.07 |
[Python] 백준 알고리즘 2798번 : 블랙잭 (0) | 2022.09.07 |
[Python] 백준 알고리즘 9375번 : 패션왕 신해빈 (0) | 2022.09.04 |
[Python] 백준 알고리즘 14425번 : 문자열 집합 (0) | 2022.09.03 |
댓글