https://programmers.co.kr/learn/courses/30/lessons/64061
function solution(board, moves) {
let result = 0;
let basket = [];
// 1. board 배열 중 0 제거
for(let i = 0; i < board.length; i++) {
for(let j = board.length-1; j >= 0; j--) {
if(board[i][j] === 0) {
board[i].splice(j, 1);
}
}
}
// 2. 바구니에 인형 담기
for(let k = 0; k < moves.length; k++) {
let pickedDoll = board[moves[k]-1][(board[moves[k]-1]).length-1];
if(board[moves[k]-1].length) { // 해당 번호에 인형이 있을 경우
if(basket.length > 0 && basket[basket.length-1] === pickedDoll) {
basket.pop();
result += 2;
}
basket.push(pickedDoll);
board[moves[k]-1].pop(); // 옮겨 담긴 인형은 board 배열에서 제거
}
}
return result;
}
의사코드로 순서 정리해서 나름 잘 풀어나가고 있었다고 생각했다 (누가 그렇게 생각하래..)
"코드실행" 했을 때 테스트 케이스는 통과했는데
"제출 후 채점하기" 의 테스트 케이스에서는 처참히 다 실패..ㅎ..
조건문이 뭘 잘못한 것 같기도 하고
board 배열 중 0 을 제거한게 잘못된 거 같기도 하고
다른 분들 코드 참고해서 코드 다시 짜봐야겠다 🤧
https://velog.io/@heumheum2/프로그래머스-2019-카카오-개발자-겨울-인턴십-크레인-인형뽑기JavaScript
https://jo-c.tistory.com/43
function solution(board, moves) {
let result = 0;
let temp = 0;
let basket = [];
for(let i = 0; i < moves.length; i++) {
for(let j = 0; j < board.length; j++) {
if(board[j][moves[i]-1] !== 0) {
if (temp === board[j][moves[i]-1]) {
result += 2;
if(basket.length > 0) {
basket.pop();
temp = basket[basket.length-1];
} else {
temp = 0;
}
} else {
basket.push(board[j][moves[i]-1]);
temp = board[j][moves[i]-1];
}
board[j][moves[i]-1] = 0;
break;
}
}
}
return result;
}
몇 시간을 계속 봐도 왜 이해가 안될까 했는데..
배열을 잘못 이해하고 있었다 😞🤯😵
[프로그래머스] 크레인 인형뽑기 게임 문제풀이 (Java)
여기에 그려두신 그림 보고 이해했다ㅠㅠㅠ
점점 화가 올라오고 있었는데 그래도 오늘 안에 이해해서 다행이다..흑
배열 실수 다시는 하지 말자 😭