-
1210. [S/W 문제해결 기본] 2일차 - Ladder1 - 자바(JAVA)알고리즘/SW Expert Academy 2022. 3. 12. 00:01
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14ABYKADACFAYh&
문제 해석
0과 1로 이루어진 보드가 존재합니다.
0은 이동할 수 없으며 1은 이동할 수 있습니다.
실제 사다리 게임을 하는 것처럼 아래로 내려가다가 왼쪽 또는 오른쪽으로 이동할 수 있다면 이동합니다.
목적지에 도달하게 된다면 시작점을 출력하는 문제입니다.
평소에 사용하던 좌표계인 data[세로][가로] 와는 다르게 data [가로][세로]의 형식을 띄고 있습니다.
또한 왼쪽 또는 한쪽 방향으로만 이동해야 하기 때문에 왼쪽으로 이동하게 된다면 오른쪽으로 이동할 수 없도록 만들어야 합니다.
제가 작성한 코드는 위에서부터 아래로 내려가가는 Top ->down 방식인데 이를 역으로 생각하여
목적지인 2부터 출발하게 된다면 조금 더 효율적인 코드가 될 것 같습니다.
코드
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Solution_1210_Ladder1 { static int board[][]; static BufferedReader br; public static void main(String[] args) throws NumberFormatException, IOException { br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); tc: for (int tc = 1; tc <= 10; tc++) { //입력 inputBoard(); //메인로직 시작 searchNext: for (int i = 0; i < 100; i++) { //초기시작은 i,0 부터 시작 int currentX = i; int currentY = 0; // 0인경우에는 출발 불가능 if (board[currentX][currentY] != 1) { continue; } inner: while (true) { boolean leftFlag = false; // 왼쪽으로 이동 // 한번이동하면 이동하지 못할때까지 이동 while (currentX - 1 >= 0 && board[currentX-1][currentY] == 1) { currentX--; leftFlag = true; } // 만약 왼쪽으로 이동했다면 오른쪽으로는 더이상 이동하면 안됨 // 오른쪽으로 이동 // 한번이동하면 이동하지 못할때까지 이동 while (currentX + 1 < 100 && board[currentX+1][currentY] == 1 && !leftFlag) { currentX++; } // 끝점에 다다름 if (currentY == 99) { // 목적지가 아니라면 다음 X를 탐색 if (board[currentX][currentY] != 2) { continue searchNext; } // 목적지라면 sb.append("#" + tc + " " + i + "\n"); continue tc; } //끝이 아니라면 currentY++; } } } System.out.println(sb.toString()); } private static void inputBoard() throws IOException { br.readLine(); board = new int[100][100]; for (int i = 0; i < 100; i++) { StringTokenizer st = new StringTokenizer(br.readLine(), " "); for (int j = 0; j < 100; j++) { board[j][i] = Integer.parseInt(st.nextToken()); } } } }
'알고리즘 > SW Expert Academy' 카테고리의 다른 글
4012. [모의 SW 역량테스트] 요리사 (0) 2022.03.28 6808. 규영이와 인영이의 카드게임 - 자바(JAVA) (0) 2022.03.19 1861. 정사각형 방 - 자바(JAVA) (0) 2022.03.11 9229. 한빈이와 Spot Mart - 자바(JAVA) (0) 2022.03.10 1228. [S/W 문제해결 기본] 8일차 - 암호문1 - 자바(JAVA) (0) 2022.03.08