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
1. 풀이
처음 문제를 보고 스택이 바로 떠오는 문제인 듯 싶다.
하지만 꼭 스택의 특성을 이용하지 않고, 리스트를 사용해도 풀이가 가능하다.
여기서는 리스트를 사용하였다.
moves 반복문을 돌면서 해당 열에 인형이 있다면 장바구니에 담아주면 되는 쉬운 문제이다.
2. 코드
import java.util.*;
class Solution {
public int solution(int[][] board, int[] moves) {
int answer = 0;
ArrayList<Integer> basket = new ArrayList<>();
for(int move : moves){
// 인형 뽑기
for(int i = 0; i < board.length; i++){
// 인형이 있다면
if(board[i][move-1] > 0){
basket.add(board[i][move-1]); // 장바구니에 인형 추가
board[i][move-1] = 0; // 보드에서 인형 제거.
break;
}
}
// 장바구니에 겹치는 인형 제거
if(basket.size() > 1 && basket.get(basket.size()-1).equals(basket.get(basket.size()-2))){
answer+=2;
// remove하면 사이즈가 바뀌기 때문에 꼭 size()-2부터 없애줘야한다.
basket.remove(basket.size()-2);
basket.remove(basket.size()-1);
}
}
return answer;
}
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 체육복 - 자바 (0) | 2020.07.03 |
---|---|
[프로그래머스] 모의고사 - 자바 (0) | 2020.07.03 |
[프로그래머스] 완주하지 못한 선수 - 자바 (0) | 2020.07.03 |
[프로그래머스] 네트워크 - 자바 (0) | 2020.04.04 |
[프로그래머스] 타켓 넘버 - 자바 (0) | 2020.04.04 |
댓글