H3 중제목
입출력 예시
요약
바구니에 2개의 같은 인형이 위치하면 사라짐
풀이
문제 해석
넣기 전 바구니의 개수가 1개 이상일 경우,
뽑은 인형과 비교해서 같으면 넣지 않고 바구니의 담긴 마지막 인형 제거
접근 방식
1. moves = col+1로 생각
→ 열의 번호(moves[i])가 1번부터 시작
2. moves[i]에 해당하는 열의 row를 최대 배열 크기만큼 순회
→ 0은 인형이 없는 것을 뜻하기 때문에 0이 아닐때까지 반복해서 찾는다.
코드리뷰
import java.util.*;
class Solution {
public int solution(int[][] board, int[] moves) {
int count = 0;
List<Integer> list = new ArrayList<>(); // 바구니로 사용할 list
for(int i = 0; i < moves.length; i++) {
int col = moves[i]-1; // col 설정
for(int j = 0; j < board.length; j++) {
if(board[j][col] != 0) { // row를 0부터 board.length까지 순회
int num = board[j][col]; // 꺼낸 인형 번호 담기
board[j][col] = 0; // 꺼냈으면 해당 값은 0으로 바꿈
if(list.size() >= 1 && list.get(list.size()-1) == num) { // 리스트에 담긴 인형이 있고, 마지막 인형의 번호와 num이 같으면
list.remove(list.size()-1); // 마지막 인형 제거
count += 2; // 결국 인형 2개가 없어진 것과 동일
} else {
list.add(num); // 다르면 바구니에 추가
}
break; // 뽑기가 끝났으면 break
}
}
}
System.out.println(list);
return count;
}
}
'알고리즘 > PROGRAMMERS' 카테고리의 다른 글
완주하지 못한 선수(Lv.1) (0) | 2024.03.21 |
---|---|
소수 찾기(Lv.2) (0) | 2024.03.21 |
키패드 누르기(Lv.1) (0) | 2024.03.21 |
성격 유형 검사하기(Lv.1) (0) | 2024.03.21 |
신규 아이디 추천(Lv.1) (0) | 2024.03.21 |