프로그래머스 | 2018 KAKAO [3차] 코테_JS

난이도 : Level. 2
언어 : Javascript
출제 내역 : 2018 KAKAO BLIND RECRUITMENT

전체 풀이 코드 👈🏻 클릭시 Github로 이동

❓ Question 1

n진수 게임

  • 내가 말해야 하는 숫자를 출력해보자

📝 My Solution 1

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();
}

그 뒤, 자신의 순서에 해당하는 문자열을 추출해 답을 도출합니다.

결과


❓ Question 2

압축

  • 입력된 문자열을 사전방식으로 기록하는 압축 기술을 구현

📝 My Solution 2

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을 해줘서
값을 도출합니다.

결과

좋은 웹페이지 즐겨찾기