본문 바로가기
👩‍💻 Programming/Coding Test 문제 풀이

[Programmers] level 1: 신규 아이디 추천 by JavaScript

by codingBear 2022. 6. 29.
728x90
반응형

 

 이번 글은 아래 링크의 글들을 참조하여 작성하였습니다.

https://tech.kakao.com/2020/04/01/2019-internship-test/

 

2019 카카오 개발자 겨울 인턴십 코딩 테스트 문제 해설

"2019년 카카오 개발자 겨울 인턴십" 공개 채용을 위한 1차 코딩 테스트가 지난 2019년 11월 9일 오후 2시부터 6시까지 총 4시간에 걸쳐 진행되었습니다. '19년 신입공채 1차 코딩 테스트 시에 7문제가

tech.kakao.com

https://velog.io/@ajufresh/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%ED%81%AC%EB%A0%88%EC%9D%B8-%EC%9D%B8%ED%98%95%EB%BD%91%EA%B8%B0-%EA%B2%8C%EC%9E%84-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4-Java

 

[프로그래머스] 크레인 인형뽑기 게임 문제풀이 (Java)

[프로그래머스] 크레인 인형뽑기 게임 문제풀이 (Java)

velog.io


 

 

 이번 문제에 대한 자세한 사항은 아래 링크를 참조하길 바란다.

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


 처음에 이중 배열을 어떻게 탐색해나갈지 헤맸던 문제였다. 답은 너비를 탐색할 때는 주어진 board의 length만큼 탐색하고 깊이를 moves의 요소만큼 탐색하면 되는 것이었다. board의 요소가 0이 아닐 경우 빈 배열 basket에 해당 요소를 집어넣고 basket의 맨 마지막 값과 현재 탐색 중인 값이 일치한다면 answer를 2만큼 증가시키고, basket의 마지막 값을 pop() method로써 제거한다. 이로써 연속되어 터트려진 인형의 개수를 구할 수 있다. 위 작업을 마치고 나면 basket에 push한 요소의 자리를 0으로 만들고 break로 빠져나온다.

 

Solutions

Solution 1.
const board = [
  [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],
];
const moves = [1, 5, 3, 5, 1, 2, 1, 4];

console.log(solution(board, moves));

function solution(board, moves) {
  const basket = [];
  let answer = 0;

  for (const move of moves) {
    for (const i in board) {
      if (board[i][move - 1] !== 0) {
        if (basket[basket.length - 1] === board[i][move - 1]) {
          answer += 2;
          basket.pop();
        } else {
          basket.push(board[i][move - 1]);
        }
        board[i][move - 1] = 0;
        break;
      }
    }
  }

  return answer;
}
728x90
반응형

댓글