문제
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;
}
}
}
}
문제
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; } } } }