{}연습장
대시보드학습스킬 경로문제모의고사라이브 코테복습데이터
문제 목록〉해시〉코드 변환기 잠김 시각← 이전다음 →
#084 · 해시쉬움해시(Set) / 사이클 감지

코드 변환기 잠김 시각

문제

출입증 코드 변환기는 현재 코드를 다음 규칙으로 계속 바꿔 씁니다.

코드의 각 자릿수를 세제곱해서 모두 더한 값이 다음 코드가 된다.

변환기는 이전에 한 번이라도 사용했던 코드가 다시 나오는 순간 잠깁니다. (처음 주어진 코드도 "사용했던 코드"에 포함됩니다.)

최초 코드 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 입니다.

제약 조건

  • 1 ≤ n ≤ 1,000,000,000
  • 변환을 반복하면 값이 커지지 않는 범위로 수렴하므로 잠김은 반드시 일어납니다

시간 복잡도 목표: O(k · log n) — k는 잠길 때까지의 변환 횟수

테스트 케이스

예시 1: 19 → 730 → 370 → 370
입력: n = 19
출력: 3
예시 2: 1 → 1, 곧바로 잠김
입력: n = 1
출력: 1
예시 3: 55 → 250 → 133 → 55 (최초 코드 재등장)
입력: n = 55
출력: 3
예시 4: 371 고정점까지 7번
입력: n = 8
출력: 7
153은 한 번 변환해도 자기 자신
입력: n = 153
출력: 1
8보다 한 단계 앞선 출발점
입력: n = 2
출력: 8
160 → 217 → 352 → 160 (길이 3 사이클)
입력: n = 160
출력: 3
최대 입력: 1000000000 → 1 → 1
입력: n = 1000000000
출력: 2
solution.ts
에디터 로딩 중…

▶ 실행은 기록 없이 채점만, 제출은 결과가 진행률·오답노트에 기록됩니다.