잡다한 배똥월드

728x90
코딩 테스트 풀이 체크리스트
2시간 내에 풀었는가? O
본인의 실력으로 풀었는가? O

 

 

코딩테스트 연습 - 콜라츠 추측

1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다. 1-1. 입력된 수가 짝수라면 2

programmers.co.kr

 

 

 

 

 

class Solution {
    fun solution(num: Int): Int {
        var answer = 0;
        var n = num.toLong();
        
        while (n != 1L && answer <= 500) {
            answer++;
            
            if (n % 2 == 0L) {
                n = n / 2;
            } else {
                n = (n * 3) + 1;
            }
        }
        
        return if (n == 1L) answer else -1;
    }
}

 

테스트 1 통과 (0.02ms, 63.2MB)
테스트 2 통과 (0.02ms, 62.8MB)
테스트 3 통과 (0.02ms, 65MB)
테스트 4 통과 (0.01ms, 63.1MB)
테스트 5 통과 (0.03ms, 63.2MB)
테스트 6 통과 (0.02ms, 63.8MB)
테스트 7 통과 (0.04ms, 62.7MB)
테스트 8 통과 (0.02ms, 62.9MB)
테스트 9 통과 (0.01ms, 63.2MB)
테스트 10 통과 (0.03ms, 63.8MB)
테스트 11 통과 (0.03ms, 61.1MB)
테스트 12 통과 (0.01ms, 63.6MB)
테스트 13 통과 (0.01ms, 63.4MB)
테스트 14 통과 (0.02ms, 65.5MB)
테스트 15 통과 (0.02ms, 60.7MB)
테스트 16 통과 (0.01ms, 63.4MB)

 

 

 

 

 

while문으로 500번만 돌리고, n이 1이 아닐 경우에는 -1을 리턴

 

 

 

 

여기서 문제가 있었던 것은 long형과 int형은 == 비교 연산자가 안 됨.

Operator == cannot be applied to ‘Long’ and ‘Int’ in Kotlin 라는 오류가 뜨므로 숫자 뒤에 L을 붙여서 long형이라고 인식 시켜주는 역할을 함.

 

 

 

 

 

728x90

+ Recent posts