Skip to content

251202 : [BOJ 1285] 동전 뒤집기#2218

Open
sksn12 wants to merge 1 commit intomainfrom
sksn12/2211/1
Open

251202 : [BOJ 1285] 동전 뒤집기#2218
sksn12 wants to merge 1 commit intomainfrom
sksn12/2211/1

Conversation

@sksn12
Copy link
Contributor

@sksn12 sksn12 commented Dec 2, 2025

🚀 이슈 번호

Resolve: {#2211}

🧩 문제 해결

스스로 해결:

🔎 접근 과정

문제 해결을 위한 접근 방식을 설명해주세요.

  • 🔹 어떤 알고리즘을 사용했는지 : 비트마스킹
  • 🔹 어떤 방식으로 접근했는지 : 행을 뒤집을지 말지를 비트마스크로 결정하고 각 행 상태에 따라 열별로 뒤집은 상태의 T 개수를 최소화하여 전체 T 개수의 최소값을 구함

⏱️ 시간 복잡도

시간 복잡도 분석을 작성해주세요.
최악의 경우 수행 시간은 어느 정도인지 분석합니다.

  • Big-O 표기법: O(?)
  • 이유:

💻 구현 코드

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

public class Main {
    static int N;
    static int[][] coin; // H=0, T=1

    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        N = Integer.parseInt(br.readLine());
        coin = new int[N][N];

        for (int i = 0; i < N; i++) {
            String line = br.readLine().replace(" ", "");
            for (int j = 0; j < N; j++) {
                coin[i][j] = (line.charAt(j) == 'T') ? 1 : 0;
            }
        }

        int answer = Integer.MAX_VALUE;

        // 행 뒤집기 여부를 비트마스크로 표현
        for (int mask = 0; mask < (1 << N); mask++) {
            int sum = 0;

            // 열 기준으로 T개 계산
            for (int col = 0; col < N; col++) {
                int tCount = 0;

                for (int row = 0; row < N; row++) {
                    int val = coin[row][col];

                    // mask에서 row번째 비트가 1이면 행 뒤집기 발생
                    if ((mask & (1 << row)) != 0) {
                        val ^= 1; // 0↔1 flip
                    }

                    if (val == 1) tCount++;
                }

                // 이 열에서 뒤집지 않고 T 개수 tCount
                // 이 열을 뒤집으면 H<->T 이므로 T 개수는 N - tCount
                sum += Math.min(tCount, N - tCount);
            }

            answer = Math.min(answer, sum);
        }

        System.out.println(answer);
    }
}

@sksn12 sksn12 self-assigned this Dec 2, 2025
@sksn12 sksn12 linked an issue Dec 2, 2025 that may be closed by this pull request
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

251202 : 코딩테스트

1 participant