문제 보러 가기:
https://programmers.co.kr/learn/courses/30/lessons/64061
나의 풀이:
https://programmers.co.kr/learn/courses/30/lessons/64061/solution_groups?language=javascript&type=my
새로운 보드를 만들어서 moves가 그 보드를 돌게 했다.
그리고 stack을 쌓아 같은 것이면 빼줬다.
function solution(board, moves) {
let answer = 0;
let new_board = [];
let bukets = [];
// 보기 쉽게 새로운 보드를 만든다.
for (let i = 0; i < board.length; i++) {
let tmp = [];
for (let j = 0; j < board[i].length; j++) {
tmp.push(board[j][i]);
}
new_board.push(tmp);
}
// moves의 각 원소를 돌면서 stack에 넣어준다.
// 이 때 0이면 그 다음 원소를 빼고(shift 이용)
// 만약 한 라인에서 더이상 뽑을 인형이 없으면 아무 일도 일어나지 않으므로 return 해준다.
moves.forEach((m) => {
if (new_board[m - 1].length === 0) return;
let item = new_board[m - 1].shift();
while (item === 0) {
item = new_board[m - 1].shift();
}
// stack의 맨 마지막 원소와 똑같으면 빼주고 2를 더한다.
if (item === bukets[bukets.length - 1]) {
bukets.pop();
answer += 2;
} else bukets.push(item);
});
return answer;
}
다른 사람 풀이 보면 엄청 고차원적이던데 나는..ㅜㅜ
'코딩테스트' 카테고리의 다른 글
[코딩테스트 기본] 10진수를 2진수로 바꾸기 (Javascript) (0) | 2022.02.20 |
---|---|
[코딩테스트] 2022 KAKAO BLIND RECRUITMENT 신고 결과 받기(Javascript) (0) | 2022.02.06 |
[프로그래머스 코딩테스트] 완전탐색 > 모의고사 (level 1) (0) | 2021.12.26 |
[코딩테스트] 2018 카카오 블라인드 테스트 - [1차]비밀지도 (Javascript) (0) | 2021.11.27 |
[코딩테스트] 2020 카카오 인턴십 - 키패드 누르기 (Javascript) (0) | 2021.11.21 |