[백준] PS/Java [실랜디]

[백준 1491] 나선 - JAVA

SH3542 2025. 2. 18. 19:54

https://www.acmicpc.net/problem/1491

 

문제에서 정의하는 시작 좌표 "가장 남서쪽" 이 (N-1,0)이 아닌 (0,0)임에 주의

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

class Main {

  public static void main(String[] args) throws IOException {

    int[] dr = {0, -1, 0, 1};
    int[] dc = {1, 0, -1, 0};

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    StringTokenizer st = new StringTokenizer(br.readLine());

    int M = Integer.parseInt(st.nextToken());
    int N = Integer.parseInt(st.nextToken());
    int r = 0;
    int c = 0;
    int d = 0;

    boolean[][] vst = new boolean[N][M];
    vst[r][c] = true;

    boolean end = false;

    while (!end) {
      for (int i = 0; i < 4; i++) {
        int tr = r + dr[d];
        int tc = c + dc[d];

        if (tr >= 0 && tr < N && tc >= 0 && tc < M && !vst[tr][tc]) {
          vst[tr][tc] = true;
          r = tr;
          c = tc;
          break;
        } else {

          d = ++d < 4 ? d : 0;

          if (i == 3) {
            end = true;
          }
        }
      }
    }

    System.out.println(c + " " + r);
  }
}