카테고리 없음

[SWEA 1210 / d4 / 그리디 / Java] Ladder1

배발자 2022. 8. 2.
반응형

사다리 게임의 기본적인 룰을 알고 있다면 해당 게임은 도착지점이 같을 수가 없다. 

그렇기 때문에 사다리를 뒤집어서 X의 위치에서 출발하면 찾고자하는 결과값을 바로 도출할 수 있다. 

 

본인은 X 지점에서부터 사다리를 거슬러 올라가는 로직을 구현했다. 

 

# 접근방법 

1. 찾고자 하는 X 의 위치를 기록 

 

2. X 의 위치에서부터 좌, 우, 상 순서대로 map의 값을 확인한다. 

 

3. 다음 조건이 성립할 때 이동. (방문 처리) 

 - map의 인덱스 범위 체크 

 - 이동할 map이 1인지 

 - 방문한 적이 있는지. 

 

4. y의 값이 0보다 클 때 동안 반복

 

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

public class Soulution {
	
	static int [][] map; 
	static int [][] visited; 
	

	 public static void main(String[] args) throws NumberFormatException, IOException {
		// TODO Auto-generated method stub

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
		StringTokenizer st;
		for(int testCase = 1; testCase<=10; testCase++) {
			int num = Integer.parseInt(br.readLine()); 
			map = new int[100][100]; 
			visited = new int[100][100]; 
			int startX = 0, startY=98; 
			for(int i=0; i<100; i++) {
				st = new StringTokenizer(br.readLine(), " ");
				for(int j=0; j<100; j++) {
					map[i][j] = Integer.parseInt(st.nextToken()); 
					if(map[i][j] == 2)startX = j; 
				}
			}
			while(startY>0) {
				if(startX-1>=0 && map[startY][startX-1]==1&&visited[startY][startX-1]==0) {
					visited[startY][startX--]=1; 
				}
				else if(startX+1<=99&&map[startY][startX+1]==1&&visited[startY][startX+1]==0) {
					visited[startY][startX++]=1; 
				}
				else startY--; 
			}
			System.out.printf("%d %d%n", num, startX);
		}
	}
}
 

SW Expert Academy

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

swexpertacademy.com

 

반응형

댓글