카카오 신입공채 3차 코딩테스트 문제1 N진수 게임 JAVA 예제


카카오 신입공채 3차 코딩테스트 문제1 N진수 게임 JAVA 예제


카카오 신입공채 2차 테스트의 경우 Http호출을 통해서 img 태그를 파싱하는 문제인지라, 실제 테스트 서버가 없는 경우 구현이 힘들기 때문에 생각하고 3차 코딩테스트를 작성합니다. 


3차 코딩테스트는 오히려 1차 코딩 테스트보다 쉬운 문제가 많았는데, 아무래도 1차의 경우는 온라인 시험, 3차는 오프라인 시험임을 감안한듯 합니다. 


그럼 카카오 신입공채 3차 코딩테스트 문제1번인 N진수을 살펴보도록 합시다. 




설명은 장황하지만, 잘 읽어보면 3,6,9 게임과 비슷한데, N진수로 변환된 스트링을 차례로 한글자씩 말하는 경우 나(튜브)가 말해야 하는 문자를 리턴하면 됩니다. 


주요 포인트

  • N진수 변환 알고리즘 작성

  • FOR문 및 적절한 IF, ELSE 사용



입력형식은 위와 같으며



출력으로 주어진 테스트 케이스는 이러합니다. 



N진수 게임 JAVA 예제


FOR, IF, ELSE 등 논리 처리로직

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public static String solution(int n, int t, int m, int p) {
    String retVal = "";
    
    int curTurn = 0;
    int curNum = 0;
    String strNum = "";
    
    while(retVal.length() < t) {
        strNum = conversion(n, curNum++); // 진수변환 결과 리턴
        for(char c : strNum.toCharArray()) {
            curTurn++;
            if(curTurn == p) {
                retVal += c;
                if(retVal.length() == t) {
                    break;
                }
            }
            if(curTurn == m) {
                curTurn = 0;
            }
        }
    }
    
    return retVal;
}
cs


N진수 변환 메소드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/**
 * 10진수를 입력받아 n진수의 String으로 리턴
 * @param n진수
 * @param num 10진수 입력값
 */
public static String conversion(int n, int num) {
    String retVal = "";
    if(num == 0) retVal = "0";
    while(num != 0) {
        retVal = (num % n < 10 ? Integer.toString(num % n) : Character.toString((char) (num % n + 55))) + retVal;
        if(num / n == 0) retVal = num + retVal; 
        num = num / n;
    }
    return retVal;
}
cs




이 글을 공유하기

댓글

Email by JB FACTORY