문제 ) https://programmers.co.kr/learn/courses/30/lessons/64061
코드 1 (내 마음에 드는거)
const solution = (board, moves) => {
let tmp = []; // 뽑은 인형 담을 배열
let cnt = 0; // 결과값
moves.forEach(move => {
const col = move - 1; // 뽑을 인형 열 인덱스
for(let i = 0; i < board.length; i++){
if(board[i][col] !== 0){
//0 이 아닌 수는 0으로 만들어야 인형을 뽑은 로직이 됨
if(tmp[tmp.length - 1] === board[i][col]){
tmp.pop();
cnt += 2;
board[j][col] = 0;
return;
} else {
tmp.push(board[j][col]);
board[j][col] = 0;
return;
}
}
}
})
return cnt;
}
코드 2) (프로그래머스 컴파일이 픽한 코드)
– 왜 이 코드가 픽되었는지 궁금.. 속도가 더 빠른거면 왜 빠른지도…(아시는 분 댓글 주시면 감사하겠습니당)
주변 개발자들에게 조언을 구해야겠다!
function solution(board, moves) {
let tmp = [];
let cnt = 0;
for(let i = 0; i < moves.length; i++){
const col = moves[i]-1;
for(let j = 0; j < board.length; j++){
if(board[j][col] !== 0){
if(tmp[tmp.length - 1] === board[j][col]) {
tmp.pop();
cnt += 2;
board[j][col] = 0;
break;
} else {
tmp.push(board[j][col]);
board[j][col] = 0;
break;
}
}
}
}
return cnt;
}
느낀 점!
나는 난독이 문제다. 글을 읽고 이해하는 연습부터 해야겠다.
그리고 이해가 안될때는 배열을 그리면서 해보자!