본문 바로가기

알고리즘 문제풀이

[코테 자신감 올리기 프로젝트] 레벨 1만 조진다

카카오 코테가 자신감을 마구 박살내고 있다. 

왜 같은 레벨 2인데 카카오가 붙으면 난이도가 수직상승 하는 것 같죠? 점점 프렌즈 친구들이 무서워지기 시작함.

그런 의미에서 오늘은 역대 카카오 기출 중 레벨 1만 여러개 풀 거임. 저중량 고반복의 느낌으로~

 

오늘 푼 문제

 

1. 다트 게임 / Lv.1 / 시간 : 39분

programmers.co.kr/learn/courses/30/lessons/17682

 

코딩테스트 연습 - [1차] 다트 게임

 

programmers.co.kr

function solution(dartResult) {
    var answer = 0;
    let regx = /([0-9]*)(\D*)/g;
    let bonusHash = {"S":1,"D":2,"T":3};
    let arr = dartResult.match(regx);
    arr.splice(-1,1);
    
    answer = arr.reduce((acc,cur,i)=>{
        let regx2 = /\D|[0-9]*/g;
        let [num, bonus, option] = cur.match(regx2);
        num = Math.pow(num,bonusHash[bonus]);
        if(option){
            option === "*" ? [num,acc[i-1]] = [num*2,acc[i-1]*2] 
                            : num = -num;
        }
        acc.push(num);
        return acc;
    },[]).reduce((acc,cur)=>{
        acc+=cur;
        return acc;
    },0)

    return answer;
}

 

 

2. 비밀지도 / Lv.1 / 시간 : 16분

programmers.co.kr/learn/courses/30/lessons/17681

 

코딩테스트 연습 - [1차] 비밀지도

비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다

programmers.co.kr

function solution(n, arr1, arr2) {
    return arr1.map((num,i)=>(num|arr2[i]).toString(2).replace(/1/g,"#").replace(/0/g," ").padStart(n));
}

 

신나는 한 줄 코딩! 비트 연산만 잘 활용하면 된다. 그리고 앞부분 공백은 padStart사용. 

 

 

3. 실패율 / Lv.1 / 시간 : 25분

programmers.co.kr/learn/courses/30/lessons/42889

 

코딩테스트 연습 - 실패율

실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스

programmers.co.kr

function solution(N, stages) {
    var answer = [];
    let hash = stages.reduce((acc,cur)=>{
        if(cur===N+1) return acc;
        acc[cur] = (acc[cur]|0)+1;
        return acc;
    },{});
    let hash2 = {};
    let len = stages.length;
    let prevCnt = 0;
    for(let i=1;i<=N;i++){
        if(!hash[i]) hash2[i] = 0;
        else{
            let value = hash[i];
            hash2[i] = value/(len-prevCnt);
            prevCnt+=value;
        }
    }
    return Object.keys(hash2).map(k=>k*1).sort((a,b)=> hash2[a]===hash2[b]? a-b : hash2[b] -hash2[a]);
}