๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 15705_๋‹จ์–ด ์ฐพ๊ธฐ

๋ฟŒ์•ผ._. 2024. 7. 25. 15:17
๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/15705)

< ๋‹จ์–ด ์ฐพ๊ธฐ >

 

๋ฌธ์ œ ํ’€์ด 

 

์—ฐ์†ํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ํƒ์ƒ‰ํ•˜๋ฉฐ ๋‹จ์–ด S๊ฐ€ ์žˆ๋Š”์ง€ ์—†๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

 

 my solution (Java)

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

public class _15705_ { // ๋‹จ์–ด ์ฐพ๊ธฐ

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;

		String S = bf.readLine();

		st = new StringTokenizer(bf.readLine());
		int N = Integer.parseInt(st.nextToken());
		int M = Integer.parseInt(st.nextToken());

		char arr[][] = new char[N][M];
		for (int i = 0; i < N; i++) {
			String str = bf.readLine();
			for (int j = 0; j < M; j++) {
				arr[i][j] = str.charAt(j);
			}
		}

		int dx[] = { -1, 1, 0, 0, -1, -1, 1, 1 };
		int dy[] = { 0, 0, -1, 1, -1, 1, -1, 1 };
		boolean flag = false;
		for (int i = 0; i < N; i++) {
			for (int j = 0; j < M; j++) {
				if (arr[i][j] != S.charAt(0)) {
					continue;
				}
				if (S.length() == 1 || flag) {
					flag = true;
					break;
				}
				for (int k = 0; k < 8; k++) {
					int x = i, y = j, idx = 1;
					while (true) {
						x += dx[k];
						y += dy[k];
						if (x >= 0 && x < N && y >= 0 && y < M && arr[x][y] == S.charAt(idx)) {
							idx++;
						} else {
							break;
						}
						if (idx == S.length()) {
							flag = true;
							break;
						}
					}
					if (flag) {
						break;
					}
				}
			}
			if (flag) {
				break;
			}
		}
		if (flag) {
			System.out.println(1);
		} else {
			System.out.println(0);
		}
	}
}
๋ณ€์ˆ˜)
S : ๋‹จ์–ด S
N, M : ํ‘œ์˜ ํ–‰, ์—ด
arr : ํ‘œ
dx, dy : ์œ„, ์•„๋ž˜, ์™ผ์ชฝ, ์˜ค๋ฅธ์ชฝ, ๋Œ€๊ฐ์„  ๋ฐฉํ–ฅ
flag : ๋‹จ์–ด ์กด์žฌ ์—ฌ๋ถ€
x, y, idx : ํ‘œ ์œ„์น˜, ๋‹จ์–ด์˜ ์ฐพ๋Š” ๋ฌธ์ž ์œ„์น˜

 

๋‹จ์–ด S๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. ํ‘œ ํฌ๊ธฐ N๊ณผ M์„ ์ž…๋ ฅ๋ฐ›์€ ํ›„ ํ‘œ ์ •๋ณด๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ์ €์žฅํ•œ๋‹ค. ํ‘œ๋ฅผ ํƒ์ƒ‰ํ•˜๋ฉฐ ๋‹จ์–ด S์˜ ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž์™€ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ๋งŒ์•ฝ ๋‹จ์–ด๊ฐ€ 1๊ธ€์ž์ด๊ฑฐ๋‚˜ ๋‹จ์–ด๋ฅผ ์ฐพ์•˜๋‹ค๋ฉด ์ข…๋ฃŒํ•œ๋‹ค. ์•„์ง ๋‹จ์–ด๋ฅผ ์ฐพ์ง€ ๋ชปํ–ˆ๋‹ค๋ฉด ์—ฐ์†ํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์ด๋™ํ•˜๋ฉฐ ์ฐพ๋Š”๋‹ค. ์œ„, ์•„๋ž˜, ์™ผ์ชฝ, ์˜ค๋ฅธ์ชฝ, ๋Œ€๊ฐ์„ ์„ ์‚ดํŽด๋ณด๋ฉฐ ํ‘œ ๋ฒ”์œ„ ์•ˆ์ด๋ฉฐ ๋‹จ์–ด ๋ฌธ์ž์™€ ์ผ์น˜ํ•˜๋‹ค๋ฉด ๊ณ„์†ํ•ด์„œ ์ฐพ๋Š”๋‹ค. ๋‹จ์–ด๋ฅผ ์ฐพ์•˜๋‹ค๋ฉด ์ข…๋ฃŒํ•œ๋‹ค.

 

์ตœ์ข… ๋‹จ์–ด๋ฅผ ์ฐพ์•˜๋‹ค๋ฉด 1์„, ๋ชป ์ฐพ์•˜๋‹ค๋ฉด 0์„ ์ถœ๋ ฅํ•œ๋‹ค.