[BOJ][Java] 14503. ๋กœ๋ด‡ ์ฒญ์†Œ๊ธฐ

2025. 9. 3. 13:33ยท๐Ÿ’ญ Problem Solving/Java

๋ฌธ์ œ

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

 

๋ฌธ์ œ ์ดํ•ด

N×M ํฌ๊ธฐ์˜ ๋ฐฉ์ด ์ฃผ์–ด์ง„๋‹ค.
๋กœ๋ด‡ ์ฒญ์†Œ๊ธฐ๋Š” ์•„๋ž˜ ๊ทœ์น™์— ๋”ฐ๋ผ ์ž‘๋™ํ•œ๋‹ค.

  1. ํ˜„์žฌ ์œ„์น˜๋ฅผ ์ฒญ์†Œํ•œ๋‹ค.
  2. ํ˜„์žฌ ์œ„์น˜์—์„œ ์™ผ์ชฝ ๋ฐฉํ–ฅ๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ํƒ์ƒ‰ํ•œ๋‹ค.
    • ์•„์ง ์ฒญ์†Œํ•˜์ง€ ์•Š์€ ๋นˆ ์นธ์ด ์žˆ์œผ๋ฉด ๊ทธ ์นธ์œผ๋กœ ์ด๋™ ํ›„ 1๋ฒˆ์œผ๋กœ ๋Œ์•„๊ฐ„๋‹ค.
    • ์—†์œผ๋ฉด ๋ฐ”๋ผ๋ณด๋Š” ๋ฐฉํ–ฅ์„ ์œ ์ง€ํ•œ ์ฑ„๋กœ ํ•œ ์นธ ํ›„์ง„ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ํ›„์ง„, ์•„๋‹ˆ๋ฉด ์ž‘๋™์„ ๋ฉˆ์ถ˜๋‹ค.

์ตœ์ข…์ ์œผ๋กœ ๋กœ๋ด‡ ์ฒญ์†Œ๊ธฐ๊ฐ€ ์ฒญ์†Œํ•˜๋Š” ์นธ์˜ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

๋ฌธ์ œ ํ’€์ด

์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๊ตฌํ˜„

  • ์ฒญ์†Œํ•  ๋•Œ๋งˆ๋‹ค ์นด์šดํŠธ๋ฅผ ์ฆ๊ฐ€
  • ๋„ค ๋ฐฉํ–ฅ ์ค‘ ์ฒญ์†Œ๋˜์ง€ ์•Š์€ ์นธ์ด ์žˆ์œผ๋ฉด ํšŒ์ „ ํ›„ ์ด๋™
  • ๋„ค ๋ฐฉํ–ฅ ๋ชจ๋‘ ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฉด ํ›„์ง„, ํ›„์ง„๋„ ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฉด ์ข…๋ฃŒ

 

์ฝ”๋“œ

import java.util.*;
import java.io.*;

public class Main {
	static int n, m, r, c, dir, ans = 0;
	static int[][] arr;

	// ์ƒ ์šฐ ํ•˜ ์ขŒ
	static int[] dr = { -1, 0, 1, 0 };
	static int[] dc = { 0, 1, 0, -1 };

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		n = Integer.parseInt(st.nextToken());
		m = Integer.parseInt(st.nextToken());

		st = new StringTokenizer(br.readLine());
		r = Integer.parseInt(st.nextToken());
		c = Integer.parseInt(st.nextToken());
		dir = Integer.parseInt(st.nextToken());

		arr = new int[n][m];
		for (int i = 0; i < n; i++) {
			st = new StringTokenizer(br.readLine());
			for (int j = 0; j < m; j++) {
				arr[i][j] = Integer.parseInt(st.nextToken());
			}
		}

		while (true) {
			first();

			if (arr[r + 1][c] == 0 || arr[r][c + 1] == 0 || arr[r - 1][c] == 0 || arr[r][c - 1] == 0) {
				third();
			} else {
				if (second())
					continue;
				else
					break;
			}
		}

		System.out.println(ans);
	}

	static void first() {
		if (arr[r][c] == 0) {
			arr[r][c] = 2;
			ans++;
		}
	}

	static boolean second() {
		int nr = r - dr[dir];
		int nc = c - dc[dir];

		if (arr[nr][nc] == 1)
			return false;

		r = nr;
		c = nc;
		return true;
	}

	static void third() {
		dir = (dir - 1) < 0 ? 3 : (dir - 1);

		int nr = r + dr[dir];
		int nc = c + dc[dir];

		if (arr[nr][nc] != 0)
			return;

		r = nr;
		c = nc;
	}
}

'๐Ÿ’ญ Problem Solving > Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[BOJ][Java] 15486. ํ‡ด์‚ฌ 2  (0) 2025.09.15
[BOJ][Java] 16930. ๋‹ฌ๋ฆฌ๊ธฐ  (4) 2025.09.09
[SWEA][Java] 3421. ์ˆ˜์ œ ๋ฒ„๊ฑฐ ์žฅ์ธ  (4) 2025.08.29
[BOJ][Java] 1946. ์‹ ์ž… ์‚ฌ์›  (1) 2025.08.26
[BOJ][Java] 2492. ๋ณด์„  (0) 2025.08.20
'๐Ÿ’ญ Problem Solving/Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [BOJ][Java] 15486. ํ‡ด์‚ฌ 2
  • [BOJ][Java] 16930. ๋‹ฌ๋ฆฌ๊ธฐ
  • [SWEA][Java] 3421. ์ˆ˜์ œ ๋ฒ„๊ฑฐ ์žฅ์ธ
  • [BOJ][Java] 1946. ์‹ ์ž… ์‚ฌ์›
0=2.
0=2.
  • 0=2.
    0=2
    0=2.
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (104)
      • ๐Ÿ“‚ Project (2)
        • Paint the City (2)
      • ๐Ÿ’ญ Problem Solving (42)
        • C++ (28)
        • Java (14)
      • ๐Ÿ“ Study (17)
        • React (1)
        • Java (16)
      • ๐Ÿ’ป CS (11)
        • ๋ฉด์ ‘์„ ์œ„ํ•œ CS ์ „๊ณต์ง€์‹ ๋…ธํŠธ (2)
        • ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ (9)
      • ๐Ÿƒ‍โ™€๏ธ Activities (32)
        • Web Front-End Basic Study (6)
        • 42 Cursus (26)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
    • ๊ธ€์“ฐ๊ธฐ
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    HTML
    CSS
    42๊ฒฝ์‚ฐ
    dfs
    github
    VR
    ๋ฐฑ์ค€
    CS
    ๊ตฌํ˜„
    ์ •๋ ฌ
    makefile
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    git
    C
    dynamic programming
    swea
    java
    ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜
    ํŠธ๋ฆฌ
    ๋งต
    BFS
    knapsack
    unity
    La Piscine
    .h
    ์‹œ๋ฎฌ๋ ˆ์ด์…˜
    ๋ธŒ๋ฃจํŠธํฌ์Šค
    ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ
    react
    ๋ฐฑํŠธ๋ž˜ํ‚น
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
0=2.
[BOJ][Java] 14503. ๋กœ๋ด‡ ์ฒญ์†Œ๊ธฐ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”