기록용 블로그

[프로그래머스][LV1] 공원 산책 본문

개발/알고리즘 공부

[프로그래머스][LV1] 공원 산책

andjane 2023. 4. 5. 23:24

https://school.programmers.co.kr/learn/courses/30/lessons/172928

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

방향성이 있는 경우

x, y 쪼개서 천천히 풀기

import java.util.*;

class Solution {
    public int[] solution(String[] park, String[] routes) {
         int startX = 0;
    int startY = 0;
    int parkHeight = park.length;
    int parkWidth = park[0].length();

    for (int i = 0; i < parkHeight; i++) {
      for (int j = 0; j < parkWidth; j++) {
        if (park[i].charAt(j) == 'S') {
          startX = i;
          startY = j;
          break;
        }
      }
    }

    int x = startX;
    int y = startY;

    for (String route : routes) {
      char direction = route.charAt(0);
      int steps = Integer.parseInt(route.substring(2));

      int newX = x;
      int newY = y;

      boolean validMove = true;
      for (int i = 1; i <= steps; i++) {
        switch (direction) {
          case 'N':
            newX--;
            break;
          case 'S':
            newX++;
            break;
          case 'W':
            newY--;
            break;
          case 'E':
            newY++;
            break;
        }

        if (newX < 0 || newX >= parkHeight || newY < 0 || newY >= parkWidth || park[newX].charAt(newY) == 'X') {
          validMove = false;
          break;
        }
      }

      if (validMove) {
        x = newX;
        y = newY;
      }
    }

    return new int[]{x, y};

    }
}

'개발 > 알고리즘 공부' 카테고리의 다른 글

[알고리즘] 시간복잡도  (0) 2023.04.20
[프로그래머스][LV1] 덧칠하기  (0) 2023.04.06
[프로그래머스][LV1] 바탕화면 정리  (0) 2023.04.06
[BOJ1919] 애너그램 만들기  (0) 2023.04.05
[boj13223] 소금폭탄  (0) 2023.04.05