[SWEA] 1210. Ladder1 _ JAVA

jii0_0·2022년 8월 11일
0

SW Expert Academy

목록 보기
5/33
post-thumbnail

[S/W 문제해결 기본] 2일차 - Ladder1 (D3)

문제 링크

  • 사다리 게임 !
  • 목표 지점은 맨아래 줄에 2로 표시되어 있고, 그 목표 지점에 도착하기 위해서는 어디서 출발하면 될까? 가 문제이다.
  • 첫줄이 맨 아래, 맨 아래줄이 맨 윗줄이 되도록 입력을 반대로 받아서 우리가 알던 사다리 게임으로 풀었다.
  • 2에서 시작해서 어디로 도착할까

Solution

package swea;
// [S/W 문제해결 기본] 2일차 - Ladder1
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class p1210 {
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;

		for (int t = 1; t <= 10; t++) {
			br.readLine();
			int[][] map = new int[100][100];
			for (int i = 99; i >= 0; i--) { // 사다리를 뒤집어서 2부터 시작해서 도착지점 찾기
				st = new StringTokenizer(br.readLine(), " ");
				for (int j = 0; j < 100; j++) {
					map[i][j] = Integer.parseInt(st.nextToken());
				}
			} // 사다리 입력

			int col = -1; // 2가 들어있는 시작지점
			for (int i = 0; i < 100; i++) {
				if (map[0][i] == 2) {
					col = i;
					break;
				}
			} // 시작지점 찾음

			int row = 0;
			while (row < 99) { // 젤 아래로 내려갈때까지
				if (col - 1 >= 0 && map[row][col - 1] == 1) { // 현재 row에서 왼쪽에 갈 곳 있는지 확인
					for (int i = col - 1; i >= 0; i--) { // 있다면 현재 row에서 왼쪽으로 쭉 따라가다가
						if (map[row + 1][i] == 1) { // 다시 내려갈길을 만나면
							col = i; // col 인덱스 변경
							break;
						}
					}
				} 
				else if (col + 1 < 100 && map[row][col + 1] == 1) { // 현재 row에서 오른쪽쪽에 갈 곳 있는지 확인
					for (int i = col + 1; i < 100; i++) { // 있다면 현재 row에서 오른쪽으로 쭉 따라가다가
						if (map[row + 1][i] == 1) { // 다시 내려갈길을 만나면
							col = i; // col 인덱스 변경
							break;
						}
					}
				}
				row++; // 아래로 한줄 내려감
			}
			System.out.println("#" + t + " " + col);
		}
	}
}
profile
느려도 꾸준히

0개의 댓글