문제 ) 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;
}

느낀 점!

나는 난독이 문제다. 글을 읽고 이해하는 연습부터 해야겠다.

그리고 이해가 안될때는 배열을 그리면서 해보자!

Leave a comment

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다