카카오 코테가 자신감을 마구 박살내고 있다.
왜 같은 레벨 2인데 카카오가 붙으면 난이도가 수직상승 하는 것 같죠? 점점 프렌즈 친구들이 무서워지기 시작함.
그런 의미에서 오늘은 역대 카카오 기출 중 레벨 1만 여러개 풀 거임. 저중량 고반복의 느낌으로~
오늘 푼 문제
1. 다트 게임 / Lv.1 / 시간 : 39분
programmers.co.kr/learn/courses/30/lessons/17682
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
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
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]);
}
'알고리즘 문제풀이' 카테고리의 다른 글
[프로그래머스] 2020 카카오 공채 - 괄호변환 (0) | 2021.03.22 |
---|---|
[프로그래머스] 2020 카카오 공채 - 문자열 압축 (0) | 2021.03.11 |
[프로그래머스] 2021 카카오 공채 - 순위 검색 (0) | 2021.03.08 |
[프로그래머스] 2021 카카오 공채 - 메뉴 리뉴얼 (0) | 2021.02.24 |
[프로그래머스] 2021 카카오 공채 - 신규 아이디 추천 (0) | 2021.02.19 |