반응형
출처: 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
풀이과정
바구니와 배열을 비교하여 같은 숫자가 있으면 카운팅하고 없앤다.
바구니를 스택으로 구현하여 관리하자.
작성코드
import java.util.*;
class Solution {
public int solution(int[][] board, int[] moves) {
int answer = 0;
Stack<Integer> baguni = new Stack<>();
for (int i = 0; i < moves.length; i++) {
int point = moves[i] - 1;
// row 마다 컬럼 체크
int character = 0;
for (int j = 0; j < board.length; j++) {
if (board[j][point] == 0)
continue;
else {
character = board[j][point];
board[j][point] = 0;
break;
}
} // for j
if (!baguni.isEmpty() && baguni.peek() == character) {
baguni.pop();
// 같은 것 쌍으로 지워짐
answer++;
answer++;
}
else if (character != 0)
baguni.push(character);
} // for i
return answer;
}
}
memo
이제 문제가 길고 장황하게 나오더라도 유형이 조금씩 보이는 것 같다.
전체 2차원 배열에서 주어진 입력에 맞게 원하는 컬럼을 탐색하고 값 수정 & 결과값 도출하면 된다.
Stack을 이용하여 풀어서 더 쉽게 풀 수 있었던 것 같다.
같은 것을 쌍으로 지우기 때문에 두 번 더하는 것에 유의하자.
반응형
'머리맞대는이야기 > 프로그래머스 (JAVA)' 카테고리의 다른 글
| [정렬] H-index (0) | 2020.10.21 |
|---|---|
| [2020 KAKAO BLIND RECRUITMENT] 문자열 압축 (0) | 2020.10.19 |
| [Summer/Winter Coding] 스킬트리 (0) | 2020.10.16 |
| [깊이/너비 우선 탐색(DFS/BFS)] 네트워크 (0) | 2020.09.27 |
| [깊이/너비 우선 탐색(DFS/BFS)] 타겟 넘버 (0) | 2020.09.23 |