본문 바로가기

프로그래머스(Kotlin)/Level 1

[프로그래머스 (Kotlin)] 콜라츠 추측

728x90

코드 힌트

1. 반복문을 통한 수열 생성

  • while (n > 1 && result <= 500) 조건으로 n이 1보다 크고, 결과 횟수가 500 이하인 동안 수열을 계속 생성합니다.
  • n의 값이 1 이하가 되거나 반복 횟수가 500을 초과할 경우 종료됩니다.

2. 짝수 및 홀수 처리

  • 짝수일 때: if (n % 2 == 0L) 조건을 사용하여 n이 짝수인지 확인합니다.
    • 짝수인 경우 n /= 2를 통해 n을 2로 나누어 값을 업데이트합니다.
  • 홀수일 때: else 블록을 통해 홀수인 경우 n을 3배하고 1을 더하는 작업을 수행합니다: n = n * 3 + 1.

3. 결과 횟수 관리

  • result++를 사용하여 각 반복이 실행될 때마다 카운트를 증가시킵니다.
  • 결과는 반복이 종료된 후 최종적으로 반환됩니다.

4. 종료 조건

  • 500을 초과한 경우: if (result > 500) 조건문으로 결과가 500을 초과하면 -1을 반환하여 처리합니다.
  • 정상 종료: 그렇지 않으면 결과 횟수(result)를 반환합니다.

 


정답은 더보기 클릭

더보기
class Solution {
    fun solution(num: Int): Int {
        var result = 0 // 반복 횟수를 저장할 변수 초기화
        var n: Long = num.toLong() // 매개변수 타입은 val로 변경이 불가능
        
        while (n > 1 && result <= 500) { // n이 1보다 크고 result가 500 이하인 동안 반복
            
            if (n % 2 == 0L) // n이 짝수인지 확인
                n /= 2 // 짝수일 경우 n을 2로 나누기
            else 
                n = n * 3 + 1 // 홀수일 경우 n을 3배하고 1을 더하기
            
            result++ // 반복 횟수 증가
        }
        
        if (result > 500) // 반복 횟수가 500을 초과하면
            return -1 // -1 반환
        
        return result // 결과 반환
    }
}
728x90