๊ธฐ๋ก๋ฐฉ

BOJ_14890 : ๊ฒฝ์‚ฌ๋กœ ๋ณธ๋ฌธ

CodingTest/Java

BOJ_14890 : ๊ฒฝ์‚ฌ๋กœ

Soom_1n 2023. 4. 7. 00:41

๐Ÿ‘‰ ๋ฌธ์ œ๋งํฌ

 

14890๋ฒˆ: ๊ฒฝ์‚ฌ๋กœ

์ฒซ์งธ ์ค„์— N (2 ≤ N ≤ 100)๊ณผ L (1 ≤ L ≤ N)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์— ์ง€๋„๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ์นธ์˜ ๋†’์ด๋Š” 10๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค.

www.acmicpc.net



๐Ÿ”ธ ๋ฌธ์ œ ๋ถ„์„ ๐Ÿ”ธ

  •  N x N ์ง€๋„์—์„œ ์ง€๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ธธ์ด ๋ช‡ ๊ฐœ์ธ์ง€ ์ถœ๋ ฅํ•œ๋‹ค.
    • ๊ธธ์„ ์ง€๋‚˜๊ฐ€๋ ค๋ฉด ๋†’์ด๊ฐ€ ๋ชจ๋‘ ๊ฐ™๊ฑฐ๋‚˜, ๊ฒฝ์‚ฌ๋กœ๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค.
    • ๊ฒฝ์‚ฌ๋กœ๋Š” ๋†’์ด ์ฐจ์ด๊ฐ€ 1์ด๊ณ , L ๋งŒํผ์˜ ๊ณต๊ฐ„์ด ํ™•๋ณด๋˜์–ด์•ผ ํ•œ๋‹ค.
    • ๋˜, ๊ฒฝ์‚ฌ๋กœ๋Š” ๋ฐ˜๋Œ€ ๋ฐฉํ–ฅ์œผ๋กœ ๊ฒน์น  ์ˆ˜ ์—†๊ณ , ๋งต์„ ๋ฒ—์–ด๋‚˜์„œ๋Š” ์•ˆ๋œ๋‹ค. (๊ฐ€๋กœ,์„ธ๋กœ๋Š” ๊ฒน์ณ๋„ ๋œ๋‹ค)
  • ํ–‰๊ณผ ์—ด ํ•œ ์ค„์”ฉ ๋ณต์‚ฌํ•ด์„œ ํ™•์ธํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ง€๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ธธ์„ ์นด์šดํŠธํ•œ๋‹ค.
    • ๊ฒฝ์‚ฌ๋กœ๋ฅผ ๋†“์€ ๊ณณ์„ ์ฒดํฌํ•˜๋ฉด์„œ ์ง€๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

๐Ÿ”ธ ์ฝ”๋“œ ๐Ÿ”ธ

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

public class Main {
    private static int N, L;

    public static void main(String[] args) throws IOException {
        // Input
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        N = Integer.parseInt(st.nextToken());
        L = Integer.parseInt(st.nextToken());
        int[][] map = new int[N][N];
        for (int i = 0; i < N; i++) {
            st = new StringTokenizer(br.readLine());
            for (int j = 0; j < N; j++) {
                map[i][j] = Integer.parseInt(st.nextToken());
            }
        }

        // ํ•œ ์ค„์”ฉ ๋ณต์‚ฌ ํ›„ ํ™•์ธ
        int[] line = new int[N];
        int ans = 0;

        for (int i = 0; i < N; i++) {
            // ํ–‰ ๋ณต์‚ฌ
            for (int j = 0; j < N; j++)
                line[j] = map[i][j];

            if (lineCheck(line))
                ans++;

            // ์—ด ๋ณต์‚ฌ
            for (int j = 0; j < N; j++)
                line[j] = map[j][i];

            if (lineCheck(line))
                ans++;
        }

        // Output
        System.out.print(ans);
    }

    private static boolean lineCheck(int[] line) {
        boolean[] check = new boolean[N];
        for (int i = 1; i < N; i++) {
            int gab = Math.abs(line[i] - line[i-1]);
            if (gab > 1) return false;
            else if(gab == 1) { // ๊ฒฝ์‚ฌ๋กœ ๋†“์•„์•ผ ํ•จ
                if (line[i-1] > line[i]) {  // ์•ž์ชฝ์ด ๋” ํฐ ๊ฒฝ์šฐ -> ๋’ค์— Lํฌ๊ธฐ ๊ณต๊ฐ„ ํ•„์š”
                    for (int j = i; j < i+L; j++) {
                        if (j >= N || check[j] || line[j] != line[i]) return false; // ๋งต์„ ๋ฒ—์–ด๋‚จ, ๊ฒน์นจ, ๊ณต๊ฐ„ ์—†์œผ๋ฉด ๊ฒฝ์‚ฌ๋กœ ๋ชป๋†“์Œ
                        check[j] = true;
                    }
                } else {                    // ๋’ค์ชฝ์ด ๋” ํฐ ๊ฒฝ์šฐ -> ์•ž์— Lํฌ๊ธฐ ๊ณต๊ฐ„ ํ•„์š”
                    for (int j = i-1; j > i-1-L; j--) {
                        if (j < 0 || check[j] || line[j] != line[i-1]) return false; // ๋งต์„ ๋ฒ—์–ด๋‚จ, ๊ฒน์นจ, ๊ณต๊ฐ„ ์—†์œผ๋ฉด ๊ฒฝ์‚ฌ๋กœ ๋ชป๋†“์Œ
                        check[j] = true;
                    }
                }
            }
        }
        return true;
    }
}

๐Ÿ”ธ ์ฝ”๋“œ ํ•ด์„ ๐Ÿ”ธ

  • ์ง€๋„์˜ ํ–‰ ๋˜๋Š” ์—ด์„ line ๋ฐฐ์—ด์— ๋ณต์‚ฌํ•ด์„œ lineCheck ๋ฉ”์„œ๋“œ๋กœ ์ง€๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ธธ์ธ์ง€ ํ™•์ธํ•œ๋‹ค.
    • ๊ฒฝ์‚ฌ๋กœ๋ฅผ ๋†“์€ ๊ณณ์€ check ๋ฐฐ์—ด์„ true๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค.
    • ์ธ๋ฑ์Šค๋ฅผ ํ•˜๋‚˜์”ฉ ์ฆ๊ฐ€ํ•ด ๊ฐ€๋ฉฐ ์ธ์ ‘ ์ธ๋ฑ์Šค๋ฅผ ๋น„๊ตํ•œ๋‹ค.
      • ๋†’์ด ์ฐจ์ด๊ฐ€ 1์„ ๋„˜์œผ๋ฉด ์ง€๋‚˜๊ฐˆ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ false๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
      • ๋†’์ด์ฐจ์ด๊ฐ€ 1์ด๋ฉด ๊ฒฝ์‚ฌ๋กœ๋ฅผ ๋†“์„ ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
        • ์•ž์ชฝ, ๋’ค์ชฝ์„ ๊ตฌ๋ถ„ํ•ด L๋งŒํผ ๊ณต๊ฐ„์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
        • ๋†“์„ ์ˆ˜ ์—†์œผ๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    • ๋†’์ด๊ฐ€ ๋ชจ๋‘ ๊ฐ™๊ฑฐ๋‚˜, ๊ฒฝ์‚ฌ๋กœ๋ฅผ ์„ค์น˜ํ•ด ํ•ด๊ฒฐํ–ˆ์œผ๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๐Ÿ”ธ end ๐Ÿ”ธ

  • ํ–‰์ด๋“  ์—ด์ด๋“  1์ฐจ์› ๋ฐฐ์—ด line์— ๋ณต์‚ฌํ•ด์„œ ๊ฒ€์‚ฌํ•˜๋ฏ€๋กœ์จ ์ค‘๋ณต ์ฝ”๋“œ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋Š”๊ฒŒ ํ•ต์‹ฌ ์•„์ด๋””์–ด์˜€๋˜ ๊ฒƒ ๊ฐ™๋‹ค.

728x90

'CodingTest > Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

BOJ_13460 : ๊ตฌ์Šฌ ํƒˆ์ถœ 2  (0) 2023.04.07
BOJ_16236 : ์•„๊ธฐ ์ƒ์–ด  (0) 2023.04.07
BOJ_13459 : ๊ตฌ์Šฌ ํƒˆ์ถœ  (0) 2023.04.06
BOJ_2239 : ์Šค๋„์ฟ   (0) 2023.04.06
BOJ_17141 : ์—ฐ๊ตฌ์†Œ 2  (0) 2023.04.06