🌞Algorithm/🔥programmers

[programmers] 공원 산책

뿌야._. 2026. 5. 28. 12:14
문제
https://school.programmers.co.kr/learn/courses/30/lessons/172928
 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 


< 공원 산책 >

 

문제 풀이 (Java)

class Solution {
	public int[] solution(String[] park, String[] routes) {
		int[] answer = new int[2];

		char arr[][] = new char[park.length][park[0].length()];
		int x = -1, y = -1;
		for (int i = 0; i < park.length; i++) {
			for (int j = 0; j < park[0].length(); j++) {
				arr[i][j] = park[i].charAt(j);

				if (arr[i][j] == 'S') {
					x = i;
					y = j;
				}
			}
		}

		for (int i = 0; i < routes.length; i++) {
			char dir = routes[i].split(" ")[0].charAt(0);
			int num = Integer.parseInt(routes[i].split(" ")[1]);
			boolean flag = false;

			if (dir == 'N') {
				for (int j = 1; j <= num; j++) {
					if (x - j < 0 || arr[x - j][y] == 'X') {
						flag = true;
						break;
					}
				}
				if (!flag) {
					x -= num;
				}

			} else if (dir == 'S') {
				for (int j = 1; j <= num; j++) {
					if (x + j >= arr.length || arr[x + j][y] == 'X') {
						flag = true;
						break;
					}
				}
				if (!flag) {
					x += num;
				}

			} else if (dir == 'W') {
				for (int j = 1; j <= num; j++) {
					if (y - j < 0 || arr[x][y - j] == 'X') {
						flag = true;
						break;
					}
				}
				if (!flag) {
					y -= num;
				}

			} else {
				for (int j = 1; j <= num; j++) {
					if (y + j >= arr[0].length || arr[x][y + j] == 'X') {
						flag = true;
						break;
					}
				}
				if (!flag) {
					y += num;
				}
			}
		}

		answer[0] = x;
		answer[1] = y;

		return answer;
	}
}

 

 공원을 나타내는 문자열 배열을 char 배열에 저장하면서 시작 지점을 찾아 저장한다. 수행할 명령이 담긴 문자열을 탐색하며 이동 방향과 이동할 칸의 수에 따라 이동해본다. 이때, 공원을 벗어나거나 장애물을 만난다면 해당 명령을 건너뛴다. 최종 위치를 answer에 저장한 후 반환한다.



 

출처: 프로그래머스 코딩 테스트 연습, 
https://school.programmers.co.kr/learn/challenges

'🌞Algorithm > 🔥programmers' 카테고리의 다른 글

[programmers] 무인도 여행  (0) 2026.05.27
[programmers] 바탕화면 정리  (0) 2026.05.26
[programmers] 호텔 대실  (0) 2026.05.22
[programmers] 택배상자  (0) 2026.05.21
[programmers] 옹알이 (2)  (0) 2026.05.20