코딩테스트/SW Expert
[SWEA] 1210. [S/W 문제해결 기본] 2일차 - Ladder1
jhk828
2021. 2. 4. 22:35
1210. [S/W 문제해결 기본] 2일차 - Ladder1
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
// 210204
import java.io.*;
import java.util.*;
public class Solution_D4_1210_Ladder1 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
for (int tc=1; tc<=10; tc++) {
int tn = Integer.parseInt(br.readLine());
StringTokenizer st = null;
int goRow = 0;
int goCol = 0;
int[][] map = new int[102][102];
int[] dr = {0, 0, -1};
int[] dc = {-1, 1, 0};
// 지도 입력
for (int r=1; r<=100; r++) {
st = new StringTokenizer(br.readLine(), " ");
for (int c=1; c<=100; c++) {
map[r][c] = Integer.parseInt(st.nextToken());
if (map[r][c] == 2) {
goRow = r;
goCol = c;
}
}
}
while (true) {
if (goRow == 1) break;
for (int d=0; d<3; d++) {
int nRow = goRow + dr[d];
int nCol = goCol + dc[d];
if (map[nRow][nCol] == 1) {
map[goRow][goCol] = 0;
goRow = nRow;
goCol = nCol;
break;
}
}
}
System.out.println("#" + tc + " " + (goCol-1));
}
br.close();
} // main
}
1. 2의 위치에서 탐색을 시작한다.
2. 왼쪽 -> 오른쪽 -> 위쪽 순서로 탐색하며 이동할 수 있으면 이동한다. 이때 원래 위치는 0으로 바꾸어서, 갔던 자리로 돌아가지 못하도록 한다.
3. 상하좌우 네면 끝을 0으로 감싼다. 어차피 0이면 그곳으로 이동하지 않는다. 범위 체크를 따로 할 필요가 없다.