/* 문제설명 */

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14ABYKADACFAYh&categoryId=AV14ABYKADACFAYh&categoryType=CODE&problemTitle=Ladder&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

로그인을 해야만 볼 수 있다.

 

 

 

 


 

 

 

/* 재귀함수 */

 

 

반복되는 부분 >> 만약 왼쪽이나 오른쪽에 길이 있다면, 길이 이어진 곳까지 진행

                        위로 한 칸 이동

                         


 

/* 해답코드 */

package samsung;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Ladder1 {
	static int start;
	static int[][] ladder = new int[100][100];
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = null;
		int dst = 0;
		for(int i=0;i<10;i++) {
			
			//입력받기
			br.readLine();	
			int x,y;
			for(x=0;x<100;x++) {
				st = new StringTokenizer(br.readLine()," ");
				for(y=0;y<100;y++) {
					ladder[x][y] = Integer.parseInt(st.nextToken());
					if(ladder[x][y]==2) {
						dst = y;
					}
				}
			}
			
			goNextFloor(99,dst);
			System.out.printf("#%d %d\n",i+1,start);
		}
		
	}

	public static void goNextFloor(int x,int y) {
		//기저조건!
		if(x==0) {
			start = y;
			return;
		}
		
		//양옆조사
		if(y-1>=0 && ladder[x][y-1]==1) {
			while(y-1>=0 && ladder[x][y-1]==1) {
				y--;
			}
		}else if(y+1<100 && ladder[x][y+1]==1) {
			while(y+1<100 && ladder[x][y+1]==1) {
				y++;
			}
		}	
		
		//다음 층으로 출발!
		goNextFloor(x-1,y);
	}
}

'Coding Test > SWEA' 카테고리의 다른 글

[SWEA][1251]하나로  (0) 2021.08.25
[SWEA]Flatten  (0) 2021.08.05

+ Recent posts