2019 카카오 신입 공채 1차


카카오 코딩 테스트 문제

들어가기 전

  • 문제들은 모두 카카오 기술블로그 게시글을 보았습니다.
  • 모든 문제들의 풀이는 읽지 않았습니다.
  • 문제들의 설명은 게시글을 참고하여주세요.
  • 자바스크립트를 이용하였습니다.
  • 언급하는 내용들은 Place 0형식으로 나타냅니다. 주석에 표기되어 있습니다.
#post-content blockquote { display : none; } // 문제풀이 텍스트가 보이지 않습니다.

1. 오픈채팅방

정답률 59.91%

function solution(record) {
    const labels = {
        Enter : "들어왔습니다.",
        Leave : "나갔습니다."
    };
    
    const names = record
        .filter(x => x.substr(0,5) !== "Leave")
        .reduce((names, line) => {
            let [command, uid, name] = line.split(" ");

            if (command == "Leave" | !name) return names;

            names[uid] = name;

            return names; // Place 1
        }, {});
    
    return record
            .filter(x => x.substr(0,6) !== "Change")
            .reduce((results, line) => {
                let [command, uid] = line.split(" ");
                
                results.push(`${names[uid]}님이 ${labels[command]}`);

                return results;
            }, []);
}

문제를 읽고 바로 어떻게 풀어야 할지 생각이 났다.
첫 번째 문제답게 다른 문제들보다도 쉬운 문제였기 때문에 큰 고민없이 풀었다.
처음 제출에서 Place 1에서 return {...names, [uid] : name}이라 작성하였는데, 시간 초과로 몇몇 테스트케이스에서 실패하였다.
이정도 차이는 괜찮은줄 알았는데, 객체를 뿌려주고 또 만들어주는데에 생각보다 많은 자원이 필요한 것 같다.

2. 실패율

정답률 55.57%

function solution(N, stages) {
    let users = stages.length;
    let ns = Array(N).fill().map((v, k) => [k, 0]);
        
    stages.forEach((v, k) => {
        if (v > N) return false;
        ns[v-1][1]++;
    });
   0     
    return ns.map(x => {
        x.push(x[1]+users == 0 ? 0 : x[1]/users); // Place 1
        users = users - x[1];
        return x;
    })
	    .sort((a, b) => a[2] == b[2] ? a[0] - b[0] :  b[2] - a[2]) // Place 2
	    .map(x => x[0]+1);
}   

첫 번째 문제와 같게 꽤나 쉬운 난이도의 문제였다.
예외처리 부분에서 좀 애를 먹기는 하였다.
Place 2는 원래 b[2] - a[2]였다. 테스트 해보니 55% 정도가 나왔었다.
같은 실패율에 대해 처리를 안해준 문제였는데, [4, 1, 2, 3]에 대한 케이스는 성공하여 그대로 냈었다.
위와 같이 예외처리를 해준다면 완성도가 올라간다.
Place 1부분은 원래 x[1]/users였는데, 자바스크립트에서는 0/0을 연산하면 NaN(Not-A-Number)이떠서 예외처리를 해 주었다. 해주니 80%에서 100%로 올라가 성공하였다.

외부링크

http://tech.kakao.com/2018/09/21/kakao-blind-recruitment-for2019-round-1/




© 2019. by jong-hui

Powered by aiden