문제 출처: 백준 2231번 분해합

문제


스크린샷 2022-07-25 오후 1 54 49

풀이


1부터 분해합을 계산하여 입력받은 결과와 같은 수를 출력하는 문제로 단순 for 문을 이용하여 풀어봤습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
let n = Int(readLine()!)!
var result = 0

for i in 1..<n {
  var sum = i
  var part = i
  
  // 각 자리수 더하기
  while part > 0 {
    sum += part % 10
    part /= 10
  }

  // 분해합이 입력받은 수와 같을 경우
  if n == sum {
    result = i
    break
  }
}

// 결과 출력
print(ans)
  1. 자연수 n을 입력받습니다.
  2. 1부터 n까지 분해합을 구합니다.
  3. 분해합이 n과 같을 경우 for 문을 중단시킵니다.

이렇게 풀 경우 메모리: 69100 KB, 시간: 20 ms 결과가 나오게 됩니다.

업데이트:

댓글남기기