-
공원 산책알고리즘/프로그래머스 2023. 5. 11. 10:38
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/172928
해설
이차원 배열로 공원 맵을 만들면 편하게 작업할 수 있다. 공원의 길이가 가로, 세로 각각 50이기 때문에 O(N^2)의 시간복잡도를 가져도 괜찮다.
코드
class Solution { public int[] solution(String[] park, String[] routes) { int[] startPoint = new int[2]; int height = park.length; int width = park[0].length(); char[][] parkMap = new char[park.length][park[0].length()]; for (int i = 0; i < height; ++i) { parkMap[i] = park[i].toCharArray(); if (park[i].contains("S")) { startPoint[0] = i; startPoint[1] = park[i].indexOf("S"); } } for (String route : routes) { boolean isCorrect = false; String[] result = route.split(" "); String direction = result[0]; String distance = result[1]; int my = startPoint[0]; int mx = startPoint[1]; int move = Integer.parseInt(distance); for (int i = 0; i < move; ++i) { if (direction.equals("E")) { ++mx; } else if (direction.equals("S")) { ++my; } else if (direction.equals("W")) { --mx; } else if (direction.equals("N")) { --my; } if ((0 <= my && 0 <= mx && my < height && mx < width )) { if (parkMap[my][mx] == 'X') break; if (i == move - 1) { startPoint[0] = my; startPoint[1] = mx; } } } } return startPoint; } }
'알고리즘 > 프로그래머스' 카테고리의 다른 글
추억 점수 (0) 2023.05.11 [Java] 달리기 경주 (0) 2023.05.03 [프로그래머스] 순위 (0) 2021.09.16 [프로그래머스] 정수 삼각형 (0) 2021.09.15 [프로그래머스] 디스크 컨트롤러 (0) 2021.09.15