난이도 : Level. 2
언어 : Javascript
출제 내역 : 2018 KAKAO BLIND RECRUITMENT
n진수 게임
- 내가 말해야 하는 숫자를 출력해보자
function solution(n, t, m, p) {
let answer = '';
let nums = '';
for (let i = 0; i<=t*m; i++) {
nums += i.toString(n)
if (nums.length < t*m) {
continue;
} else if (nums.length >= t*m) {
break;
}
}
우선 0부터 시작하는 수를 n 진수로 변환해 주고,
변환해서 합친 문자들이 숫자의 개수와 참가 인원을 곱한 만큼의 길이 보다 크면
해당 반복문을 멈춰줍니다.
for (let i = p-1; i<t*m; i++) {
if (i % m === p-1) {
answer += nums[i]
}
}
return answer.toUpperCase();
}
그 뒤, 자신의 순서에 해당하는 문자열을 추출해 답을 도출합니다.
압축
- 입력된 문자열을 사전방식으로 기록하는 압축 기술을 구현
function solution(msg) {
let answer = [];
let result = [];
let msgArr = msg.split('')
const dic = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N',
'O','P','Q','R','S','T','U','V','W','X','Y','Z'];
for (let i = 0; i<msgArr.length; i++) {
if (dic.indexOf(msgArr[i]+msgArr[i+1]) === -1) {
result.push(msgArr[i]);
dic.push(msgArr[i]+msgArr[i+1]);
} else {
let newStr = msgArr[i]+msgArr[i+1];
msgArr[i+1] = newStr;
}
}
먼저 들어온 문자열을 각각 배열로 쪼개주고,
사전에 해당하는 배열을 하나 만들어 줍니다.
그 뒤, 조합한 글자가 사전 배열에 없으면 사전에 넣어주고,
그 앞 글자를 결과 배열에 넣어 줍니다.
있다면 조합의 두번째 글자를 조합된 글자로 변경해 줍니다.
for (let i = 0; i<result.length; i++) {
answer.push(dic.indexOf(result[i])+1)
}
return answer;
}
그렇게 나온 결과를 사전 인덱스에서 찾아서 인덱스 +1을 해줘서
값을 도출합니다.