SSAFY10-Class5-Algorithm / BOJ

📘SSAFY 10기 5반의 백준 문제 알고리즘 스터디
https://www.acmicpc.net/
5 stars 6 forks source link

[Java] 14503 로봇청소기 #71

Closed jehunyoo closed 1 year ago

jehunyoo commented 1 year ago

문제에서 주어진 로봇청소기가 작동하는 방식을 구현하면 됩니다.

구현 디테일

  1. 문제에서 방의 상태를 0 또는 1로 주고 동서남북을 숫자와 연관지어서 데이터를 넘겨주는데 이러한 객체(상태, 방향)를 enum으로 구현했습니다.

    enum Status {EMPTY, CLEANED, WALL}
    
    enum Direction {
      NORTH() {
          Direction turn() { return Direction.WEST; }
          int[] getDelta() { return new int[]{-1, 0}; }
      },
      EAST {
          Direction turn() { return Direction.NORTH; }
          int[] getDelta() { return new int[]{0, 1}; }
      },
      SOUTH {
          Direction turn() { return Direction.EAST; }
          int[] getDelta() { return new int[]{1, 0}; }
      },
      WEST {
          Direction turn() { return Direction.SOUTH; }
          int[] getDelta() { return new int[]{0, -1}; }
      };
    
      abstract Direction turn();
      abstract int[] getDelta();
  2. enum에 정의한 메서드를 활용하여 반복 작업에 사용되는 지역 변수의 범위를 최소화했습니다.

for (Direction d = dir.turn(); ; d = d.turn())