[SWEA] #1210 - Ladder1
2022. 3. 2. 12:28
728x90
반응형
💡 출처
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14ABYKADACFAYh
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
💡 문제
[설명]
X=0인 출발점에서 출발하는 사례에 대해서 화살표로 표시한 바와 같이, 아래 방향으로 진행하면서 좌우 방향으로 이동 가능한 통로가 나타나면 방향 전환을 하게 된다.
방향 전환 이후엔 다시 아래 방향으로만 이동하게 되며, 바닥에 도착하면 멈추게 된다.
문제의 X 표시에 도착하려면 X=4인 출발점에서 출발해야 하므로 답은 4가 된다. 해당 경로는 별도로 표시하였다.
이와 같이 여러 개의 시작점 중에서 X에 도착하는 시작점을 찾는 코드를 작성하라.
[제약 사항]
1. 사다리는 100X100의 2차원 배열로 주어진다.
2. 사다리는 1, 도착지점은 2로 표시한다.
💡 아이디어
1. 2차원 배열 입력을 받으며 도착지점(값이 2인 곳)을 찾는다.
2. 도착지점에서 사다리를 밑에서 위로 타고 올라간다.
3. 사다리의 첫 번째 줄에 도착하면 열의 값을 반환한다.
💡 소스코드
import java.io.FileInputStream;
import java.util.Scanner;
/*Ladder1*/
public class P_1210 {
public static void main(String[] args) throws Exception {
System.setIn(new FileInputStream("input.txt"));
Scanner sc = new Scanner(System.in);
int T;
int start = 1, floor = 98;
int[][] ladder = new int[100][100];
boolean[][] visit;
for (int test_case = 1; test_case <= 10; test_case++) {
T = sc.nextInt();
visit = new boolean[100][100];
floor = 98;
for (int i = 0; i < 100; i++)
for (int j = 0; j < 100; j++)
ladder[i][j] = sc.nextInt();
for (int k = 0; k < 100; k++)
if(ladder[floor + 1][k] == 2)
start = k;
while (true) {
if(floor == 0)//첫 줄에 도착했을 때
break;
else if (start - 1 > 0 && start + 1 < 100 && ladder[floor][start - 1] == 0 && ladder[floor][start + 1] == 0) {//좌우 길이 없고 벽이 아닐 때
visit[floor][start] = true;
floor--;
}
else if (start - 1 > 0 && ladder[floor][start - 1] == 1 && visit[floor][start - 1] == false) {//왼쪽 길이 있을 때
visit[floor][start] = true;
start--;
}
else if (start + 1 < 100 && ladder[floor][start + 1] == 1 && visit[floor][start + 1] == false) {//오른쪽 길이 있을 때
visit[floor][start] = true;
start++;
}
else if(start - 1 < 0 || start + 1 >= 100) {//왼쪽 또는 오른쪽이 벽일 때
visit[floor][start] = true;
floor--;
}
else if(visit[floor][start - 1] == false || visit[floor][start + 1] == false) {//왼쪽이나 오른쪽 길을 지나왔을 때
visit[floor][start] = true;
floor--;
}
}
System.out.println("#" + T + " " + start);//출력
}
}
}
💡 결과
728x90
반응형
'Algorithm > SW Expert Academy' 카테고리의 다른 글
[SWEA] #1215 - 회문1 (0) | 2022.03.02 |
---|---|
[SWEA] #1213 - String (0) | 2022.03.02 |
[SWEA] #1259 - 금속막대 (0) | 2022.02.25 |
[SWEA] #1209 - Sum (0) | 2022.02.25 |
[SWEA] #1258 - 행렬찾기 (0) | 2022.02.23 |