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();
}
}
'알고리즘 > JAVA' 카테고리의 다른 글
5. 쇠막대기 (0) | 2021.09.23 |
---|---|
4. 후위식 연산(postfix) (0) | 2021.09.23 |
2. 괄호문자제거 (0) | 2021.09.22 |
1. 올바른 괄호 (0) | 2021.09.22 |
5. K번째 큰 수 (0) | 2021.09.22 |
댓글