Skip to content

Conversation

@zinnnn37
Copy link
Contributor

@zinnnn37 zinnnn37 commented Aug 26, 2025

🧷 문제 링크

동전 뒤집기

🧭 풀이 시간

120분

👀 체감 난이도

✏️ 문제 설명

동전 뒷면이 가장 적게 나오도록 뒤집었을 때, 뒷면인 동전의 수 구하기

🔍 풀이 방법

비트마스킹으로 풀었습니다.
coins의 인덱스가 하나의 행을 의미하고, 비트 마스킹을 사용해서 뒤집히는 경우의 수를 계산했습니다.
처음에는 행과 열을 모두 일일이 고려하는 코드를 작성했는데, 시간이 너무 오래 걸려서 보니까 다른 사람들은 열만 고려하더라고요~..
코드에 주석이랑 변수 좀 잘못 적힌 게 많은데 그건 무시하시고,,....,.

        // 뒤집는 경우의 수(열)
        for (int colFlipped = 0; colFlipped < (1 << N); colFlipped++) {
            // 뒷면
            int totalTails = 0;

            for (int row = 0; row < N; row++) {
                // 0일 때 뒤집지 않고(0), 1일 때 뒤집을 때(1) 0이 되어야 해서 XOR 연산
                // 여기서 열 뒤집기
                int tailsInRow = Integer.bitCount(coins[row] ^ colFlipped);

                // 행은 직접적으로 뒤집지 않고 뒷면의 개수를 비교해서 확인
                totalTails += Math.min(tailsInRow, N - tailsInRow);
            }
            ans = Math.min(ans, totalTails);
        }

열은 완탐하고 행은 그리디로 찾는 방법입니다.. 어려워

⏳ 회고

🙂🙃🙂🙃

@ShinHeeEul ShinHeeEul merged commit 241c2d8 into main Aug 26, 2025
1 check passed
@zinnnn37 zinnnn37 added success 👍 해설을 보지 않고 풀었을 때 hint 💡 반례를 참고했거나 힌트를 얻고 풀었을 때 labels Aug 26, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

hint 💡 반례를 참고했거나 힌트를 얻고 풀었을 때 success 👍 해설을 보지 않고 풀었을 때

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants