반응형
사다리 게임의 기본적인 룰을 알고 있다면 해당 게임은 도착지점이 같을 수가 없다.
그렇기 때문에 사다리를 뒤집어서 X의 위치에서 출발하면 찾고자하는 결과값을 바로 도출할 수 있다.
본인은 X 지점에서부터 사다리를 거슬러 올라가는 로직을 구현했다.
# 접근방법
1. 찾고자 하는 X 의 위치를 기록
2. X 의 위치에서부터 좌, 우, 상 순서대로 map의 값을 확인한다.
3. 다음 조건이 성립할 때 이동. (방문 처리)
- map의 인덱스 범위 체크
- 이동할 map이 1인지
- 방문한 적이 있는지.
4. y의 값이 0보다 클 때 동안 반복
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Soulution {
static int [][] map;
static int [][] visited;
public static void main(String[] args) throws NumberFormatException, IOException {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
for(int testCase = 1; testCase<=10; testCase++) {
int num = Integer.parseInt(br.readLine());
map = new int[100][100];
visited = new int[100][100];
int startX = 0, startY=98;
for(int i=0; i<100; i++) {
st = new StringTokenizer(br.readLine(), " ");
for(int j=0; j<100; j++) {
map[i][j] = Integer.parseInt(st.nextToken());
if(map[i][j] == 2)startX = j;
}
}
while(startY>0) {
if(startX-1>=0 && map[startY][startX-1]==1&&visited[startY][startX-1]==0) {
visited[startY][startX--]=1;
}
else if(startX+1<=99&&map[startY][startX+1]==1&&visited[startY][startX+1]==0) {
visited[startY][startX++]=1;
}
else startY--;
}
System.out.printf("%d %d%n", num, startX);
}
}
}
반응형
댓글