코딩테스트
[코딩테스트] 2019 카카오 개발자 겨울 인턴십 - 크레인 인형뽑기(Javascript)
보오
2021. 11. 22. 21:45
문제 보러 가기:
https://programmers.co.kr/learn/courses/30/lessons/64061
코딩테스트 연습 - 크레인 인형뽑기 게임
[[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4
programmers.co.kr
나의 풀이:
https://programmers.co.kr/learn/courses/30/lessons/64061/solution_groups?language=javascript&type=my
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
새로운 보드를 만들어서 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;
}
다른 사람 풀이 보면 엄청 고차원적이던데 나는..ㅜㅜ