Search

공원 산책

알고리즘
연습문제
플랫폼
프로그래머스
JCF
상태
해결
생성 일시
2023/12/23 07:48
최종 편집 일시
2023/12/24 09:10

문제 설명

해결과정

Solution.java

class Solution { public int[] solution(String[] park, String[] routes) { int[] answer = startPosition(park); int height = park.length - 1; int width = park[0].length() - 1; System.out.println("시작 좌표 (" + answer[0] + "," + answer[1] + ")"); System.out.println("공원의 한계 좌표 (" + height + "," + width + ")"); arrstr(park); for(String route : routes) { String optical = route.substring(0,1); int length = Integer.parseInt(route.substring(2, route.length())); move(park, answer, optical, length, height, width); } return answer; } // 명령대로 이동 public int[] move(String[] park, int[] answer, String optical, int length, int height, int width) { // 현재 세로 좌표 int h = answer[0]; // 현재 가로 좌표 int w = answer[1]; // 명령어 대로 이동 String route = ""; switch(optical) { case "E" : w += length; break; case "W" : w -= length; break; case "N" : h -= length; break; case "S" : h += length; break; } // 공원을 벗어나지 않는다면 if(h <= height && w <= width && 0 <= h && 0 <= w) { // 가는길에 X좌표 있는지 확인 int maxh = answer[0] > h ? answer[0] : h; int minh = answer[0] < h ? answer[0] : h; int maxw = answer[1] > w ? answer[1] : w; int minw = answer[1] < w ? answer[1] : w; for(int i = minh; i <= maxh; i++) { for(int j = minw; j <= maxw; j++) { route += park[i].charAt(j) + ""; } } if(!route.contains("X")){ answer[0] = h; answer[1] = w; } } return answer; } // 초반 포지션 입력 public int[] startPosition(String[] park) { int[] answer = new int [2]; for(int i = 0; i < park.length; i++) { if(park[i].contains("S")) { int index = park[i].indexOf("S"); answer[0] = i; answer[1] = index; } } return answer; } // park 배열 출력 public void arrstr(String[] park) { for(int i = 0; i < park.length; i++) { for(int j = 0; j < park[i].length(); j++) { System.out.print(park[i].charAt(j) + " "); } System.out.println(); } } }
Java
복사