잡다한 배똥월드

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

 

 

코딩테스트 연습 - 하샤드 수

양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하

programmers.co.kr

 

 

 

 

 

class Solution {
    fun solution(x: Int): Boolean {
        var xString = x.toString().chunked(1);
        
        var num = 0;
        for (i in 0..xString.size-1) {
            num += Integer.parseInt(xString[i]);
        }
        
        return if (x % num == 0) true else false; 
    }
}

 

테스트 1 통과 (10.14ms, 64.1MB)
테스트 2 통과 (8.73ms, 64.4MB)
테스트 3 통과 (10.15ms, 63.7MB)
테스트 4 통과 (12.17ms, 62.8MB)
테스트 5 통과 (13.80ms, 64.3MB)
테스트 6 통과 (11.47ms, 65MB)
테스트 7 통과 (8.40ms, 64.9MB)
테스트 8 통과 (11.43ms, 64.2MB)
테스트 9 통과 (8.38ms, 63.9MB)
테스트 10 통과 (8.27ms, 63.9MB)
테스트 11 통과 (8.14ms, 65MB)
테스트 12 통과 (8.55ms, 64.1MB)
테스트 13 통과 (10.25ms, 64.5MB)
테스트 14 통과 (9.44ms, 65.1MB)
테스트 15 통과 (8.09ms, 64.9MB)
테스트 16 통과 (8.55ms, 64.1MB)
테스트 17 통과 (7.94ms, 63.8MB)

 

 

 

 

 

코틀린에서 문자열을 배열로 만드는 방법으론 split과 chunked 두 가지의 함수가 있다.

 

 

 

근데 자바와 같이 split("")은 계속 오류가 나서 코틀린에서는 구분자를 제대로 넣어야 진행할 수 있는 것 같고, 그래서 chunked(길이)를 이용하여 배열로 만들었다.

 

 

 

 

그리고 리턴할 때 역시 코틀린은 삼항 연산자가 없어서 x % num == 0 ? true : false 가 오류가 났고,

삼항 연산자를 쓸 수 없다는 것을 알게 되서 if (x % num == 0) true else false; 로 표현하였다.

 

 

 

 

 

728x90

+ Recent posts