문제
https://level.goorm.io/exam/195692/gamejam/quiz/1
구름LEVEL
난이도별 다양한 문제를 해결함으로써 SW 역량을 향상시킬 수 있습니다.
level.goorm.io
코드
import java.io.*;
import java.util.*;
class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//입력값 저장
int N = Integer.parseInt(br.readLine());
StringTokenizer st;
int[][] start = new int[2][2];
for(int i=0;i<2;i++){
st = new StringTokenizer(br.readLine()," ");
start[i][0] = Integer.parseInt(st.nextToken())-1;
start[i][1] = Integer.parseInt(st.nextToken())-1;
}
String[][] board = new String[N][N];
for(int i=0;i<N;i++){
st = new StringTokenizer(br.readLine());
for(int j=0;j<N;j++){
board[i][j] = st.nextToken();
}
}
int goorm = search(start[0][0], start[0][1], board, N);
int player = search(start[1][0], start[1][1], board, N);
if(goorm > player){
System.out.println("goorm "+goorm);
}
else{
System.out.println("player "+player);
}
}
static int search(int r, int c, String[][] board, int N){
int result = 1;
boolean[][] visited = new boolean[N][N];
visited[r][c] = true;
while(true){
int move = Integer.parseInt(board[r][c].substring(0, board[r][c].length()-1));
char dir = board[r][c].charAt(board[r][c].length()-1);
for(int i=0;i<move;i++){
if(dir == 'U') {
r = r - 1 < 0 ? N-1 : r-1;
}else if(dir == 'D') {
r = r + 1 == N ? 0 : r+1;
}else if(dir == 'L') {
c = c - 1 < 0 ? N-1 : c-1;
}else {
c = c + 1 == N ? 0 : c+1;
}
if(visited[r][c]){
return result;
}
result++;
visited[r][c] = true;
}
}
}
}