Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- useRef 지역 변수
- 모던 자바스크립트 딥다이브
- 개발자 특강
- 모던 자바스크립트 TIL
- KDT 프로그래머스
- KDT 프로그래머스 데브코스 프론트엔드
- react customHook 예시
- TypeScript 문법 소개
- frontend roadmap study
- 프로그래머스 데브코스
- 리팩토링 회고
- 투포인터알고리즘 js
- 백준 js
- 프로그래머스 K_Digital Training 프론트엔드
- 모던 자바스크립트 Deep Dive
- 백준 node.js
- Vue3 Router
- Frontend Roadmap
- 머쓱이
- Vue3
- K_Digital Training
- 인프런 자바스크립트 알고리즘 문제풀이
- 모던 자바스크립트 Deep Dive TIL
- 프로그래머스 K_Digital Training
- 프로그래머스 데브코스 프론트엔드
- 우테캠 회고록
- useEffect return
- 모던 javascript Deep Dive
- react 프로젝트 리팩토링
- 프로그래머스 데브코스 프론트엔드 TIL
Archives
- Today
- Total
프론트엔드 개발자의 기록 공간
[프로그래머스 JavaScript] 크레인 인형뽑기 게임 본문
프로그래머스 Level1 2010 카카오 개발자 겨울 인턴십 문제
문제 설명 : 인형의 정보 board와 크레인 작동위치 moves가 주어질때, 크레인을 움직여 해당 인형을
바구니에 순차적으로 쌓고 같은 인형이 있다면 인형을 없애주고 없어진 인형의 개수를 카운트 하면된다.
그림에서 보는거처럼 바구니는 stack자료구조 특성을 이용하면 된다.
또한 크레인 위치가 주어질때 해당 열만 탐색해서 인형이 있다면 처리해주면 된다.
function solution(board, moves) {
var answer = 0;
//board 이차원 배열 깊은 복사
let list = board.map((v) => v.slice());
//바구니
let stack = [];
//크레인 위치정보만큼 반복
for (let i = 0; i < moves.length; i++) {
//배열의 인덱스 0부터 고려
let n = moves[i] - 1;
//크레인 위치 n을 기준으로 세로길이만큼만 탐색
for (let j = 0; j < list.length; j++) {
//배열에 인형이 있을시
if (list[j][n] !== 0) {
//바구니 마지막값이 현재 인형과 같다면
if (stack[stack.length - 1] === list[j][n]) {
answer += 2;
stack.pop();
}
//다르면 인형 삽입
else {
stack.push(list[j][n]);
}
//뽑은 인형 처리후, 해당 배열 탐색 종료
list[j][n] = 0;
break;
}
}
}
return answer;
}
코드 설명 : 문제 설명과 주석에 적힌 설명 그대로 크레인 위치 정보에 해당하는 열을 탐색한다.
탐색 과정에서 인형을 발견하면 바구니에 넣기전에 바구니 마지막값과 비교하여 같다면 pop을 통해 마지막 인형을 없애주고 카운트 2를 해준다.
다르다면 바구니에 넣고 list해당위치를 0으로 초기화 한 후, 해당 열 탐색을 종료시킨다.
시간복잡도는 크레인위치 moves반복, board의 열 반복을 통해 O(n^2)이 된다.
728x90
'알고리즘_JS > 프로그래머스_Level1' 카테고리의 다른 글
[프로그래머스 JavaScript] 3진법 뒤집기 (0) | 2021.06.07 |
---|---|
[프로그래머스 JavaScript] 폰켓몬 (0) | 2021.06.07 |
[프로그래머스 JavaScript] 키패드 누르기 (0) | 2021.06.06 |
[프로그래머스 JavaScript] 체육복 (0) | 2021.05.24 |
[프로그래머스 JavaScript] 모의고사 (0) | 2021.05.22 |
Comments