사다리 타기를 한다.
입력값은 100×100의 매트릭스형태이고
사다리가 연결된 곳은 1로 연결되지 않은 곳은 0으로 표현된다
최종 목적지는 2로 표현될때 각 목적지로 도착할 수 있는 시작점 의 index를 구하는문제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
import java.util.Scanner; public class Solution{ public static void main(String[] agrs){ int testCase = 10; String[][] matrix = new String[100][100]; Solution sol = new Solution(); Scanner sc = new Scanner(System.in); for(int inx = 0 ; inx < testCase ; inx++){ String testNo =sc.nextLine(); boolean isStraight = true; for(int inj = 0 ; inj < 100 ; inj++){ String inputs =sc.nextLine(); matrix[inj]= inputs.split(" "); } int startPoint = sol.getDestination(matrix[matrix.length-1]); int result = sol.moveNextStep(matrix , matrix.length-1 , startPoint , "UP"); System.out.println("#"+testNo + " " + String.valueOf(result)); } } public int getDestination(String[] lastRow){ for(int inx = 0 ; inx < lastRow.length ; inx++){ if("2".equals(lastRow[inx])){ return inx; } } return -1; } public int moveNextStep(String[][] matrix, int row, int column , String direction){ if(row == 0 ) return column; if(!"RIGHT".equals(direction) && column-1 > -1 && "1".equals(matrix[row][column-1])) return moveNextStep( matrix, row, column-1, "LEFT"); else if(!"LEFT".equals(direction) && column+1 < 100 && "1".equals(matrix[row][column+1])) return moveNextStep( matrix, row, column+1, "RIGHT"); else if("1".equals(matrix[row-1][column])) return moveNextStep( matrix, row-1, column, "UP"); return 0; } } |
출처 : https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14ABYKADACFAYh&categoryId=AV14ABYKADACFAYh&categoryType=CODE