728x90
Lv. 1 크레인 인형뽑기 게임 - 성공
참고할만한 풀이
import java.util.Stack;
class Solution {
public int solution(int[][] board, int[] moves) {
int answer = 0;
Stack<Integer> stack = new Stack<>();
for (int move : moves) {
for (int j = 0; j < board.length; j++) {
if (board[j][move - 1] != 0) {
if (stack.isEmpty()) {
stack.push(board[j][move - 1]);
board[j][move - 1] = 0;
break;
}
if (board[j][move - 1] == stack.peek()) {
stack.pop();
answer += 2;
} else
stack.push(board[j][move - 1]);
board[j][move - 1] = 0;
break;
}
}
}
return answer;
}
}
내 풀이
import java.io.*;
import java.util.*;
public class Solution {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[][] 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}};
int[] moves = {1,5,3,5,1,2,1,4};
Solution.solution(board, moves);
}
public static int solution(int[][] board, int[] moves) {
int answer = 0;
int N = board.length;
ArrayList[] arr = new ArrayList[N];
for(int i = 0 ; i < N ; i++) {
arr[i] = new ArrayList<Integer>();
}
// 인형 라인 할당.
for(int i = 0; i < N ; i++) {
for(int j = 0; j < N ; j++) {
//0은 제외해야함
if(board[i][j] != 0) {
arr[j].add(board[i][j]); //맨 마지막에 바닥 인형 -> 처음 인덱스 인형부터 꺼내야함
}
}
}
//인형 담을 바구니
ArrayList<Integer> basket = new ArrayList();
int count = 0;
//라인별로 인형뽑기 MOVES에 맞춰서
for(int lineNumber : moves) {
int line = lineNumber -1;
Integer number = 0;
if(arr[line].size() != 0) {
number = (Integer) arr[line].get(0);
}else {
//인형이 없는 라인이라면 패스
continue;
}
arr[line].remove(0); // 뽑은 인형 지우기 -> 메소드 까먹음 주의
basket.add(number); //바구니에 담음\
// System.out.println(number);
}
count = Solution.deleteDup(basket);
// System.out.println("count is : " + count);
answer = Solution.deleteDup(basket);
// System.out.println(answer);
return count;
}
public static int deleteDup(ArrayList<Integer> list) {
boolean copy = false;
int count = 0;
Integer previous = 0;
while(!copy) {
copy = true;
for(int i = 0; i < list.size(); i++) {
Integer number = list.get(i);
if(i < list.size()-1) {
Integer nextNumber = list.get(i+1);
if(number == nextNumber) {
list.remove(i);
list.remove(i);
// System.out.println("같은 수는 : " + number);
count = count + 2;
copy = false;
break;
}
}
}
if( copy == true) {
continue;
}
}
return count;
}
}
728x90
'알고리즘' 카테고리의 다른 글
[Algorithm] 5월29일 알고리즘 연습 (0) | 2022.05.29 |
---|---|
[Algorithm] 5월 26일 알고리즘 연습 (0) | 2022.05.26 |
[Algorithm] 5월 25일 알고리즘 연습 (0) | 2022.05.25 |
[Algorithm] 5월 20일 알고리즘 연습 (1) | 2022.05.20 |
[알고리즘] 5월 19일 알고리즘 연습(2문제) (0) | 2022.05.20 |
댓글