๊ธฐ๋ก๋ฐฉ

BOJ_1051 : ์ˆซ์ž ์ •์‚ฌ๊ฐํ˜• ๋ณธ๋ฌธ

CodingTest/Java

BOJ_1051 : ์ˆซ์ž ์ •์‚ฌ๊ฐํ˜•

Soom_1n 2022. 10. 27. 21:26

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

 

1051๋ฒˆ: ์ˆซ์ž ์ •์‚ฌ๊ฐํ˜•

N×Mํฌ๊ธฐ์˜ ์ง์‚ฌ๊ฐํ˜•์ด ์žˆ๋‹ค. ๊ฐ ์นธ์—๋Š” ํ•œ ์ž๋ฆฌ ์ˆซ์ž๊ฐ€ ์ ํ˜€ ์žˆ๋‹ค. ์ด ์ง์‚ฌ๊ฐํ˜•์—์„œ ๊ผญ์ง“์ ์— ์“ฐ์—ฌ ์žˆ๋Š” ์ˆ˜๊ฐ€ ๋ชจ๋‘ ๊ฐ™์€ ๊ฐ€์žฅ ํฐ ์ •์‚ฌ๊ฐํ˜•์„ ์ฐพ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ์ด๋•Œ, ์ •์‚ฌ๊ฐํ˜•์€ ํ–‰

www.acmicpc.net



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

  • ์ž…๋ ฅ ๋œ n x mํฌ๊ธฐ์˜ ์ˆ˜ ๋ฐฐ์—ด์—์„œ ์ •์‚ฌ๊ฐํ˜•์„ ๊ทธ๋ ธ์„๋•Œ ๊ผญ์ง€์ ์ด ๊ฐ™์€ ์ˆ˜์ธ ๊ฒฝ์šฐ์—์„œ ๊ฐ€์žฅ ํฐ ์ •์‚ฌ๊ฐํ˜•์˜ ๋„ˆ๋น„๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
  • ์ •์‚ฌ๊ฐํ˜• ํ•œ ๋ณ€์˜ ๊ธธ์ด๋ฅผ ๋Š˜๋ ค๊ฐ€๋ฉฐ ๋ฐฐ์—ด์„ ํƒ์ƒ‰ํ•ด์•ผ ํ•œ๋‹ค.
    • ๋ฐฐ์—ด์˜ ์ตœ๋Œ€ ํฌ๊ธฐ๋Š” 50 x 50์ด๋ฏ€๋กœ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ O(n^3)์ด๋ผ๊ณ  ํ•ด๋„ 50^3 = 125,000์œผ๋กœ ์‹œ๊ฐ„์€ ์—ฌ์œ ์žˆ๋‹ค.
    • 1์ž๋ฆฌ ๋ฌธ์ž๋“ค์ด ๊ณต๋ฐฑ์—†์ด ์ž…๋ ฅ๋˜๋ฏ€๋กœ, ๊ตฌ๋ฌธํ•ด์„œ ์ €์žฅํ•ด์•ผํ•œ๋‹ค.
    • ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉฐ ์ •์‚ฌ๊ฐํ˜•์˜ ๋„ค ๊ผญ์ง€์ ์˜ ๊ฐ’์ด ๊ฐ™์€ ๊ฒฝ์šฐ์˜ ์ˆ˜ ์ค‘์— ๋„ˆ๋น„๊ฐ€ ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ์ฐพ๋Š”๋‹ค.

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

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

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

        int n = Integer.parseInt(st.nextToken());
        int m = Integer.parseInt(st.nextToken());
        int arr[][] = new int[n][m];

        for (int i = 0; i < n; i++){
            String temp[] = br.readLine().split("");
            for (int j = 0; j < m; j++){
                arr[i][j] = Integer.parseInt(temp[j]);
            }
        }
        int answer = 0;
        int min = n < m ? n:m;
        for (int l = 1; l < min; l++){
            for (int i = 0; i < n-l; i++){
                for (int j = 0; j < m-l; j++){
                    if (l>answer && arr[i][j] == arr[i+l][j] && arr[i][j] == arr[i][j+l] && arr[i][j] == arr[i+l][j+l])
                        answer = l;
                }
            }
        }
        answer++;
        System.out.println(answer*answer);
    }
}

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

  • ์ž…๋ ฅ๋˜๋Š” ๋ฐฐ์—ด์„ ์ด์ค‘ ๋ฐฐ์—ด arr์— ์ €์žฅํ•œ๋‹ค.
    • ํ•œ ์ž๋ฆฌ ์ˆซ์ž๊ฐ€ ๊ณต๋ฐฑ์—†์ด ์ž…๋ ฅ๋˜๋ฏ€๋กœ, split("")์„ ํ†ตํ•ด String ๋ฐฐ์—ด temp๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.
    • temp์˜ ์›์†Œ๋ฅผ ํ•˜๋‚˜์”ฉ arr์— ์ €์žฅํ•œ๋‹ค.
  • (์ •์‚ฌ๊ฐํ˜•์˜ ํ•œ ๋ณ€์˜ ๊ธธ์ด - 1) ์ธ ๋ณ€์ˆ˜ l์„ 1๋ถ€ํ„ฐ (n, m์ค‘ ์ž‘์€ ๊ฐ’ - 1) ๊นŒ์ง€ ๋ฐ˜๋ณตํ•˜๋ฉฐ ๊ฐ’์„ ํ™•์ธํ•œ๋‹ค.

๐Ÿ”ธ end ๐Ÿ”ธ

  • ์ƒ๊ฐ๋ณด๋‹ค ๊ฐ„๋‹จํ•˜๊ฒŒ ํ’€ ์ˆ˜ ์žˆ์—ˆ๋‹ค.
  • ๋ธŒ๋ฃจํŠธ ํฌ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ์—ฌ์„œ ์‹œ๊ฐ„์ดˆ๊ณผ๋ฅผ ๊ฑฑ์ •ํ–ˆ๋Š”๋ฐ, n์˜ ํฌ๊ธฐ๊ฐ€ 50๋ฐ–์— ์•ˆ๋˜์–ด์„œ ์•„์ฃผ ์—ฌ์œ ์žˆ์—ˆ๋‹ค.

728x90

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

BOJ_1064 : ํ‰ํ–‰์‚ฌ๋ณ€ํ˜•  (0) 2022.11.01
BOJ_1059 : ์ข‹์€ ๊ตฌ๊ฐ„  (0) 2022.10.30
BOJ_2003 : ์ˆ˜๋“ค์˜ ํ•ฉ 2  (0) 2022.10.26
BOJ_11004 : K๋ฒˆ์žฌ ์ˆ˜  (0) 2022.10.25
BOJ_6996 : ์• ๋„ˆ๊ทธ๋žจ  (0) 2022.10.24