삐까냥의 파도타기

카카오 블라인드 채용 신입 공채 3차 코딩 테스트) 1번 문제 본문

코딩/카카오 코딩 테스트

카카오 블라인드 채용 신입 공채 3차 코딩 테스트) 1번 문제

금손형아 2018. 3. 5. 23:10


문제 출처 : http://tech.kakao.com/2017/11/14/kakao-blind-recruitment-round-3/


카카오 3차에 대한 안좋은 추억이 있어서 쳐다보지도 않았는데,


트라우마에 마주하려 합니다.


(그날은 유난히도 재수가 없던 날이었습니다.)




어쨌든,


정답률이 91%라고 했나요?


방금까지만 해도 해결 방법이 생각나지 않아서 어렵다고 생각했어요.


너무 어렵게만 생각해서 그랬나봐요.


(실제로 시험장에서 어렵게 풀었어요.)



근데, 그냥 모든 대답을 구한 다음에


원하는 대답만 뽑아내면 되는 간단한 문제였네요.



(코드를 더 다듬고 싶은데, 컴터가 막 버버벅버벅 거리네요.)


2018년 3월 5일


public class kakao3_1 {

public static void main(String args[]) {

solution(2, 4, 2, 1);

solution(16, 16, 2, 1);

solution(16, 16, 2, 2);

}

//n진법, 구할 숫자 개수 t, m명, 내 순서 p번째

static void solution(int n, int t, int m, int p) {

int lastNumber = m * (t - 1) + p;

StringBuffer totalAnswer = new StringBuffer();

totalAnswer.append(0);

for (int i = 1; ; i++) {

String nowAnswer = calResult(n, i);

totalAnswer.append(nowAnswer);

if (totalAnswer.length() > lastNumber) {

break;

}

}

for(int i = 0; i < t; i++) {

System.out.print(totalAnswer.toString().charAt(p - 1 + (m * i)));

}

System.out.println();

}

static String calResult(int n, int num) {

StringBuffer result = new StringBuffer();

int resultNum = num;

while (resultNum > 0) {

int tempValue = resultNum;

if (resultNum >= n) {

tempValue = resultNum % n;

}

String tempResult = getValue(tempValue);

result.append(tempResult);

resultNum /= n;

}

return result.reverse().toString();

}

static String getValue(int i) {

switch (i) {

case 10 :

return "A";

case 11 :

return "B";

case 12 :

return "C";

case 13 :

return "D";

case 14 :

return "E";

case 15 :

return "F";

default :

return String.valueOf(i);

}

}

}