1. 유형
구현
2. 자료구조
없음
3. 기능
- 방향 바꾸기
- 무한대 판단
방향은 그냥 노가다로 16가지 경우의 수를 모두 구현
무한대는 맵 크기가 500*500이니깐 250001번이 나오면 무한대이다.
코드.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.PriorityQueue;
import java.util.StringTokenizer;
public class Main {
static int N, M, sr, sc;
static char map[][];
static int dr[] = {-1,0,1,0};//상 오 하 왼
static int dc[] = {0,1,0,-1};
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(in.readLine());
N = Integer.valueOf(st.nextToken());
M = Integer.valueOf(st.nextToken());
map = new char[N][M];
for (int i = 0; i < N; i++) {
String s = in.readLine();
for (int j = 0; j < M; j++) {
map[i][j] = s.charAt(j);
}
}
st = new StringTokenizer(in.readLine());
sr = Integer.valueOf(st.nextToken())-1;
sc = Integer.valueOf(st.nextToken())-1;
int max=0;
int dir=0;
for (int i = 0; i < 4; i++) {
int cr = sr;
int cc = sc;
int cd = i;
int idx=1;
while (true) {
int nr = cr + dr[cd];
int nc = cc + dc[cd];
if(idx>250000)
break;
if (nr < 0 || nr >= N || nc < 0 | nc >= M || map[nr][nc] == 'C') {
break;
}
if (map[nr][nc] == '/' || map[nr][nc] == '\\') {
cd=change(map[nr][nc], cd);
}
cr = nr;
cc = nc;
idx++;
}
if(max < idx) {
max = idx;
dir = i;
}
}
if(dir==0)
System.out.println('U');
else if(dir==2)
System.out.println('D');
else if(dir==3)
System.out.println('L');
else if(dir==1)
System.out.println('R');
if(max>250000) {
System.out.println("Voyager");
}else
System.out.println(max);
}
static int change(char c, int d) {
int nd =0;
if (c == '/') {
if (d == 0) {
nd =1;
} else if (d == 1) {
nd = 0;
} else if (d == 2) {
nd = 3;
} else if (d == 3) {
nd= 2;
}
} else {
if (d == 0) {
nd=3;
} else if (d == 1) {
nd=2;
} else if (d == 2) {
nd=1;
} else if (d == 3) {
nd=0;
}
}
return nd;
}
}
5. 느낀점
실버2는 아닌거 같다.
'알고리즘 > 백준' 카테고리의 다른 글
백준 18249 - 근손실(java) (0) | 2021.01.13 |
---|---|
백준 2310 - 어드벤처 게임(Java) (0) | 2021.01.09 |
백준 17225 - 세훈이의 선물가게(Java) (0) | 2021.01.08 |
백준 13022 - 늑대와 올바른 단어(Java) (0) | 2021.01.07 |
백준 1922 - 네트워크 연결(Java) (0) | 2021.01.07 |