알고리즘/JAVA
3. 크레인 인형뽑기(카카오)
vivi
2021. 9. 22. 05:15
import java.util.*;
class Main {
public int solution(int N, int[][] board, int move, int[] moves) {
int answer = 0;
Stack<Integer> stack = new Stack<>();
for (int i = 0; i < move; i++) {
for (int j = 0; j < N; j++) {
if (board[j][moves[i] - 1] != 0) {
if (stack.isEmpty()) {
stack.push(board[j][moves[i] - 1]);
} else {
if (stack.lastElement() != board[j][moves[i] - 1]) {
stack.push(board[j][moves[i] - 1]);
} else {
answer += 2;
stack.pop();
}
}
board[j][moves[i] - 1] = 0;
break;
}
}
}
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner kb = new Scanner(System.in);
int N = kb.nextInt();
int[][] board = new int[N][N];
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++)
board[i][j] = kb.nextInt();
}
int move = kb.nextInt();
int[] moves = new int[move];
for (int i = 0; i < move; i++)
moves[i] = kb.nextInt();
System.out.print(T.solution(N, board, move, moves));
kb.close();
}
}
import java.util.*;
class Main {
public int solution(int N, int[][] board, int move, int[] moves) {
int answer = 0;
Stack<Integer> stack = new Stack<>();
for (int pos : moves) {
for (int i = 0; i < board.length; i++) {
if (board[i][pos - 1] != 0) {
int tmp = board[i][pos - 1];
board[i][pos - 1] = 0;
if (!stack.isEmpty() && tmp == stack.peek()) {
answer += 2;
stack.pop();
} else
stack.push(tmp);
break;
}
}
}
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner kb = new Scanner(System.in);
int N = kb.nextInt();
int[][] board = new int[N][N];
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++)
board[i][j] = kb.nextInt();
}
int move = kb.nextInt();
int[] moves = new int[move];
for (int i = 0; i < move; i++)
moves[i] = kb.nextInt();
System.out.print(T.solution(N, board, move, moves));
kb.close();
}
}