오늘 푼 문제
1. 크레인 인형뽑기 게임 / Lv.1 / 시간 : 12분
programmers.co.kr/learn/courses/30/lessons/64061
function solution(board, moves) {
var answer = 0;
let n = board.length;
let stack = [];
let newArr = board.reduce((acc,cur)=>{
cur.forEach((v,i)=>{
if(v) acc[i].push(v)
})
return acc;
},Array.from(new Array(n),()=>new Array()));
moves.forEach(i=>{
if(newArr[i-1].length) {
let target = newArr[i-1].shift();
if(stack[stack.length-1]==target){
stack.pop();
answer++;
}else{
stack.push(target);
}
}
})
return answer*2;
}
2. 튜플 / Lv.2 / 시간 : 38분
programmers.co.kr/learn/courses/30/lessons/64065
1차 - 일단 arr을 중복되는 것 까지 다 concat 한 뒤 최종 arr을 set으로 중복제거함
function solution(s) {
var answer = [];
let arr = JSON.parse(s.replace(/{/g,"[").replace(/}/g,"]"))
.sort((a,b)=>a.length-b.length)
.reduce((acc,cur)=>{
acc = acc.concat(cur);
return acc;
},[]);
answer = [...new Set(arr)];
return answer;
}
통과는 했지만 속도가 느림
2차- 매번 더할 때 마다 set을 생성해 중복제거를 시켜줌
function solution(s) {
var answer = [];
let arr = JSON.parse(s.replace(/{/g,"[").replace(/}/g,"]"))
.sort((a,b)=>a.length-b.length)
.reduce((acc,cur)=>{
acc = [...new Set([...acc,...cur])];
return acc;
},[]);
answer = arr;
return answer;
}
결과 : 매번 set을 생성함에도 성능적으로 속도가 확연히 줄었다.
'알고리즘 문제풀이' 카테고리의 다른 글
[프로그래머스] 2019카카오 겨울 인턴십 - 징검다리 건너기 (0) | 2021.02.09 |
---|---|
[프로그래머스] 2019카카오 겨울 인턴십 - 불량 사용자 (0) | 2021.02.08 |
[프로그래머스] 2020카카오 인턴십 - 경주로 건설 (0) | 2021.02.03 |
[프로그래머스] 2020카카오 인턴십 - 보석 쇼핑 (0) | 2021.02.02 |
[프로그래머스] 2020카카오 인턴십 - 키패드 누르기/ 수식 최대화 (0) | 2021.02.01 |