import Foundation
let N = Int(readLine()!)!
for num in 1...N {
let disassembleSum = num + String(num).compactMap { $0.wholeNumberValue }.reduce(0, +) // 해당 숫자의 분해합을 구해서
if disassembleSum == N {
print(num)
break
}
if num == N {
print(0)
}
}
코드 설명
- 입력 값 N에 저장한다.
- 생성자은 항상 N보다 작다.
- 1부터 N을 for문으로 순회하면서 생성자의 분해합과 입력값이 같은 경우를 찾는다.
- N까지 순회가 끝날 때까지 생성자를 찾지 못한다면 0을 출력한다.
메서드 설명
- String: 입력값을 문자로 변환한다.
- compactMap { $0.wholeNumberValue }: 문자열의 각 문자를 숫자로 변환한다.
- reduce(0, +) 생성된 숫자 배열의 모든 요소를 더합니다. 0은 초기 시작 기본값입니다.
https://www.acmicpc.net/problem/2231
'코딩테스트 > 문제풀이-1' 카테고리의 다른 글
[선택] 10818 최소, 최대 (0) | 2024.01.25 |
---|---|
[선택] 10995 별찍기 - 20 (0) | 2024.01.25 |
[선택] 2438 별 찍기 -1 (0) | 2024.01.22 |
[선택] 10869 사칙연산 (0) | 2024.01.22 |
[필수] 8892 팰린드롬 (0) | 2024.01.22 |
[필수] 8958 OX퀴즈 (0) | 2024.01.22 |
[필수] 2711 오타맨 고창영 (0) | 2024.01.21 |
[필수] 1302 베스트셀러 (0) | 2024.01.20 |