[카카오] 3차 코딩 테스트 문제1(N진수 게임) 풀이 using Javascript
나는 아직 코딩 테스트를 한 번도 격어보지 못했다.
그래서 최근 공개된 카카오의 신입 공채 문제를 풀어보기로 했다.
그 첫번쨰 문제는 다음과 같다.
보다 자세한 문제 설명은 아래 카카오 공식 블로그 링크에서 확인할 수 있다.
http://tech.kakao.com/2017/11/14/kakao-blind-recruitment-round-3/
먼저 이 문제에서 반복문이 시행되어야 하는 횟수는
미리 구할 숫자의 갯수(t) * 게임에 참가하는 인원(m)으로 나타낸다.
다음으로 진법 변환을 먼저 살펴보자.
Javascript에서는 아래와 같은 방법으로 원하는 진법으로 숫자를 변경 할 수 있다.
위와 같은 방법으로 진법을 변경한 숫자의 글자수만큼 다시 loop를 진행 해 튜브의 순서가 되면 output에 해당 문자열을 추가해준다.
최종 코드는 아래와 같다.
* 보다 개선시킬 수 있는 부분 있다면 댓글을 남겨주시면 반영하겠습니다.
그래서 최근 공개된 카카오의 신입 공채 문제를 풀어보기로 했다.
그 첫번쨰 문제는 다음과 같다.
문제1. N진수 게임
튜브가 활동하는 코딩 동아리에서는 전통적으로 해오는 게임이 있다. 이 게임은 여러 사람이 둥글게 앉아서 숫자를 하나씩 차례대로 말하는 게임인데, 규칙은 다음과 같다.- 숫자를 0부터 시작해서 차례대로 말한다. 첫 번째 사람은 0, 두 번째 사람은 1, … 열 번째 사람은 9를 말한다.
- 10 이상의 숫자부터는 한 자리씩 끊어서 말한다. 즉 열한 번째 사람은 10의 첫 자리인 1, 열두 번째 사람은 둘째 자리인 0을 말한다.
입력 형식
진법 n, 미리 구할 숫자의 갯수 t, 게임에 참가하는 인원 m, 튜브의 순서 p 가 주어진다.
- 2 ≦ n ≦ 16
- 0 < t ≦ 1000
- 2 ≦ m ≦ 100
- 1 ≦ p ≦ m
출력 형식
튜브가 말해야 하는 숫자
t개를 공백 없이 차례대로 나타낸 문자열. 단, 10~15는 각각 대문자 A~F로 출력한다.http://tech.kakao.com/2017/11/14/kakao-blind-recruitment-round-3/
문제 풀이
내가 생각했을 때 이 문제의 키워드는 진법 변환, 반복문 정도다.
먼저 이 문제에서 반복문이 시행되어야 하는 횟수는
미리 구할 숫자의 갯수(t) * 게임에 참가하는 인원(m)으로 나타낸다.
다음으로 진법 변환을 먼저 살펴보자.
Javascript에서는 아래와 같은 방법으로 원하는 진법으로 숫자를 변경 할 수 있다.
(3).toString(2); //11
위와 같은 방법으로 진법을 변경한 숫자의 글자수만큼 다시 loop를 진행 해 튜브의 순서가 되면 output에 해당 문자열을 추가해준다.
최종 코드는 아래와 같다.
* 보다 개선시킬 수 있는 부분 있다면 댓글을 남겨주시면 반영하겠습니다.
const n = 2; //진법
const t = 4; //미리 구할 숫자의 갯수
const m = 2; //게임에 참가하는 인원
const p = 1; //튜브의 순서
//i 진행 횟수
//j n진법 정수
//k n진법 정수 문자열 위치
//loopCount 반복 횟수
const loopCount = t * m;
let output = '';
for (let i = 1, j = 0; i <= loopCount; ) {
const num = j.toString(n);
const numLength = num.length;
for (let k = 0; k < numLength && i <= loopCount; k++, i++) {
const testNum = i % m;
if ((p === m && testNum === 0) || (p !== m && p === testNum)) {
output += num[k].toUpperCase();
}
}
j++;
}
console.log(output); //0111
댓글
댓글 쓰기