이번 글은 아래 링크의 글들을 참조하여 작성하였습니다.
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
[프로그래머스] 크레인 인형뽑기 게임 문제풀이 (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; }
'👩💻 Programming > Coding Test 문제 풀이' 카테고리의 다른 글
[Programmers] level 1: 다트게임 by JavaScript (0) | 2022.06.30 |
---|---|
[Programmers] level 1: 비밀지도 by JavaScript (0) | 2022.06.30 |
[Programmers] level 1: 키패드 누르기 by JavaScript (0) | 2022.06.29 |
[Programmers] level 1: 숫자 문자열과 영단어 by JavaScript (0) | 2022.06.29 |
[Programmers] level 1: 신규 아이디 추천 by JavaScript (0) | 2022.06.28 |
댓글