출입증 코드 변환기는 현재 코드를 다음 규칙으로 계속 바꿔 씁니다.
코드의 각 자릿수를 세제곱해서 모두 더한 값이 다음 코드가 된다.
변환기는 이전에 한 번이라도 사용했던 코드가 다시 나오는 순간 잠깁니다. (처음 주어진 코드도 "사용했던 코드"에 포함됩니다.)
최초 코드 n이 주어질 때, 변환기가 잠길 때까지 수행한 변환 횟수를 반환하는
solution(n)을 구현하세요.
| n | 반환값 | 변환 과정 |
|---|---|---|
19 |
3 |
19 → 730 → 370 → 370 (3번째 변환에서 370이 재등장) |
1 |
1 |
1 → 1 (1번째 변환에서 곧바로 재등장) |
55 |
3 |
55 → 250 → 133 → 55 (최초 코드가 재등장) |
8 |
7 |
8 → 512 → 134 → 92 → 737 → 713 → 371 → 371 |
19의 첫 변환은 1³ + 9³ = 730 입니다.
시간 복잡도 목표: O(k · log n) — k는 잠길 때까지의 변환 횟수
▶ 실행은 기록 없이 채점만, 제출은 결과가 진행률·오답노트에 기록됩니다.