본문 바로가기
Problem Solving/Baekjoon

[백준] 2160 그림 비교 - Brute Force / Java

by graycode 2023. 8. 28.

 문제 링크

 

2160번: 그림 비교

N(2 ≤ N ≤ 50)개의 그림이 있다. 각각의 그림은 5×7의 크기이고, 두 가지 색으로 되어 있다. 이때 두 가지의 색을 각각 ‘X’와 ‘.’으로 표현하기로 하자. 이러한 그림들이 주어졌을 때, 가장 비

www.acmicpc.net

 

 풀이 코드

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class Main {

    static char[][][] arr;

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int n = Integer.parseInt(br.readLine());

        arr = new char[n][5][7];
        for (int i = 0; i < n; i++)
            for (int j = 0; j < 5; j++) arr[i][j] = br.readLine().toCharArray();

        int min = 36, a = 0, b = 0;
        for (int i = 0; i < n - 1; i++) {
            for (int j = i + 1; j < n; j++) {
                int cnt = compare(i, j);
                if (cnt < min) {
                    min = cnt;
                    a = i;
                    b = j;
                }
            }
        }

        bw.write((a + 1) + " " + (b + 1));
        bw.flush();
    }

    public static int compare(int a, int b) {
        int cnt = 0;
        for (int i = 0; i < 5; i++)
            for (int j = 0; j < 7; j++) if (arr[a][i][j] != arr[b][i][j]) cnt++;

        return cnt;
    }

}

댓글