티스토리 뷰
1210. [S/W 문제해결 기본] 2일차 - Ladder1
// 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이면 그곳으로 이동하지 않는다. 범위 체크를 따로 할 필요가 없다.
'코딩테스트 > SW Expert' 카테고리의 다른 글
[SWEA] 1218. [S/W 문제해결 기본] 4일차 - 괄호 짝짓기 (0) | 2021.02.04 |
---|---|
[SWEA] 1206. [S/W 문제해결 기본] 1일차 - View (0) | 2021.02.04 |
[SWEA] 1983. 조교의 성적 매기기 (0) | 2021.02.01 |
[SWEA] 1289. 원재의 메모리 복구하기 (0) | 2021.02.01 |
[SWEA] 1984. 중간 평균값 구하기 (0) | 2021.01.31 |
댓글