티스토리 뷰
728x90
SMALL
크레인 인형뽑기 게임(2019 카카오 개발자 겨울 인턴십)
function solution(board, moves) {
let arr=[];
let count=0;
for(let i=0;i<moves.length;i++){
for(let j=0;j<board.length;j++){
if(board[j][moves[i]-1]){
arr.push(board[j][moves[i]-1]);
board[j].splice(moves[i]-1,1,0);
if(arr[arr.length-1]===arr[arr.length-2]){
arr.splice(arr.length-2);
count+=2;
}
break;
}
}
}
return count;
}
programmers.co.kr/learn/courses/30/lessons/64061
두 개 뽑아서 더하기
function solution(numbers) {
let arr=[];
for(let i=0;i<numbers.length;i++){
for(let j=i+1;j<numbers.length;j++){
arr.push(numbers[i]+numbers[j]);
}
}
return [...new Set(arr)].sort((a,b)=>a-b);
}
programmers.co.kr/learn/courses/30/lessons/68644?language=javascript
3진법 뒤집기
function solution(n) {
return parseInt(n.toString(3).split('').reverse().join(''),3);
}
programmers.co.kr/learn/courses/30/lessons/68935
내적
function solution(a, b) {
return a.reduce((acc,cur,idx) => acc+=a[idx]*b[idx],0);
}
programmers.co.kr/learn/courses/30/lessons/70128
키패드 누르기(2020 카카오 인턴쉽)
function solution(numbers, hand) {
let pos={
1:[0,0], 2:[0,1], 3:[0,2],
4:[1,0], 5:[1,1], 6:[1,2],
7:[2,0], 8:[2,1], 9:[2,2],
"*":[3,0], 0:[3,1], "#":[3,2]
}
let l=pos["*"], r=pos["#"];
hand = hand==="left" ? "L" : "R";
return numbers.map(num=>{
let pos_num=pos[num];
if([1,4,7].includes(num)){
return lClick();
}else if([3,6,9].includes(num)){
return rClick();
}else{
return chooseHand(l,r,pos_num,hand)==="L" ? lClick() : rClick();
}
function lClick(){
l=pos_num;
return "L";
}
function rClick(){
r=pos_num;
return "R";
}
}).join('');
}
function chooseHand(l,r,pos_num,hand){
const lDis=Math.abs(l[0]-pos_num[0])+Math.abs(l[1]-pos_num[1]);
const rDis=Math.abs(r[0]-pos_num[0])+Math.abs(r[1]-pos_num[1]);
return lDis===rDis ? hand : lDis<rDis ? "L" : "R";
}
programmers.co.kr/learn/courses/30/lessons/67256
예산
function solution(d, budget) {
let result=0;
d.sort((a,b)=>a-b);
while(d[0]<=budget){
budget-=d.shift();
result++;
}
return result;
}
programmers.co.kr/learn/courses/30/lessons/12982
[1차] 비밀지도(2018 KAKAO BLIND RECRUITMENT)
function solution(n, arr1, arr2) {
return arr1.map((val,idx) =>
('0'.repeat(n)+(val | arr2[idx]).toString(2)).slice(-n)
.replace(/1/g,"#").replace(/0/g," "));
}
programmers.co.kr/learn/courses/30/lessons/17681
실패율(2019 KAKAO BLIND RECRUITMENT)
전에
function solution(N, stages) {
let arrival_not_clear, arrival;
let arr=[];
for(let i=0;i<N;i++){
arrival_not_clear=0;
arrival=0;
for(let j=0;j<stages.length;j++){
if(i+1<=stages[j]){
arrival++;
}
if(i+1===stages[j]){
arrival_not_clear++;
}
}
arr.push(arrival_not_clear/arrival);
}
arr=arr.map((percent,index)=>(
{index:index+1,percent}
));
arr.sort(comparePercent);
let ans=[];
for(let i=0;i<N;i++){
ans.push(arr[i].index);
}
return ans;
function comparePercent(a, b){
if(a.percent>b.percent) return -1;
else if(a.percent<b.percent) return 1;
else return a.index-b.index;
}
}
실패
function solution(N, stages) {
stages.sort((a,b)=>a-b);
let fail=0, index=0, percent;
let arr=[];
while(stages.length!==0 && index+1!==stages.length){
fail++;
if(stages[index]!=stages[index+1]){
percent=fail/stages.length;
arr.push({index:stages[index],percent})
stages.splice(0,fail);
index=0, fail=0;
}else if(stages[index]===stages[stages.length-1]){
percent=index+stages.length/stages.length;
arr.push({index:stages[index],percent})
break;
}else{
index++;
}
}
arr.sort((a,b)=>b.percent-a.percent);
let result=[];
for(let i=0;i<arr.length;i++){
result.push(arr[i].index);
}
let j=1;
while(result.length!==N){
if(result.indexOf(j)===-1) result.push(j);
j++;
}
return result;
}
성공
function solution(N, stages) {
let users=stages.length;
let arr = Array(N).fill().map((val,idx) => [idx, 0]);
stages.forEach(i=>{
if(i>N) return false;
arr[i-1][1]++;
});
return arr.map(x => {
x.push(x[1]/users);
users-=x[1];
return x;
}).sort((a, b) => b[2]-a[2]).map(x => x[0]+1);
}
programmers.co.kr/learn/courses/30/lessons/42889
1차 다트게임(2018 KAKAO BLIND RECRUITMENT) -- 정규식을 알긴하는데 여기서 못쓰겠다..
function solution(dartResult) {
let arr=[];
for(let i=0;i<dartResult.length;i++){
if(dartResult.slice(i,i+2)=="10"){
arr.push(10);
i++;
} else if(!isNaN(dartResult[i])){
arr.push(dartResult[i]*1)
} else if(dartResult[i]==="D"){
arr.splice(arr.length-1,1,arr[arr.length-1]**2);
} else if(dartResult[i]==="T"){
arr.splice(arr.length-1,1,arr[arr.length-1]**3);
} else if(dartResult[i]==="*"){
if(arr.length===1){
arr.splice(arr.length-1,1,arr[arr.length-1]*2);
}else{
arr.splice(arr.length-2,2,arr[arr.length-2]*2,arr[arr.length-1]*2);
}
} else if(dartResult[i]==="#"){
arr.splice(arr.length-1,1,arr[arr.length-1]*-1);
}
}
return arr.reduce((acc,cur)=>acc+cur,0);
}
programmers.co.kr/learn/courses/30/lessons/17682
728x90
LIST
'코딩테스트' 카테고리의 다른 글
프로그래머스 2단계 답지2 (0) | 2021.01.01 |
---|---|
프로그래머스 2단계 답지1 (0) | 2020.12.29 |
프로그래머스 1단계 답지1 (0) | 2020.12.25 |
코딩테스트 연습 > 2018 KAKAO BLIND RECRUITMENT > [1차] 뉴스 클러스터링 (0) | 2020.08.28 |
코딩테스트 연습 > 2017 팁스타운 > 예상 대진표 (0) | 2020.08.27 |
댓글
공지사항