Skip to content

Conversation

@oncsr
Copy link
Contributor

@oncsr oncsr commented Mar 5, 2025

🧷 문제 링크

https://www.acmicpc.net/problem/32830

🧭 풀이 시간

100분

👀 체감 난이도

✏️ 문제 설명

  • 카드 N개의 앞, 뒷면에 각각 색이 칠해져있다.
  • 색은 0 ~ 1000000 사이의 정수로 나타낸다.
  • 카드를 적당히 뒤집어서, 보이는 색의 종류를 최대화해보자.

🔍 풀이 방법

[사용한 알고리즘]

  • DFS

  • 각 카드의 앞, 뒷면에 칠해진 색을 a, b라고 하면, a와 b를 잇는 간선을 그래프에 추가시킨다.
  • 어떤 점 a와 간선으로 연결된 점들은, a가 선택된 시점에서 반드시 쓰여야 하는 점들을 의미한다.
  • 완성된 그래프의 각 컴포넌트별로, 이 컴포넌트가 트리인지 아닌지 확인한다.
  • 트리가 아니면, 해당 그래프에 존재하는 색을 항상 모두 보이게 할 수 있다.
  • 만약 트리라면, 트리에 존재하는 색 중 하나만 제외하고 모두 보이게 할 수 있다.

⏳ 회고

  • 처음엔 DP로 접근했다가 실패하고, 두 번째엔 그래프 상에서 최장 경로를 구하는 거라고 생각했다가 반례가 나와서 갈아엎었다.
  • 이후에도 중복 간선의 여부를 생각하지 않아서 고생했다.

@oncsr oncsr added success 👍 해설을 보지 않고 풀었을 때 timeout ⌚ 목표 시간보다 오래걸렸을 때 labels Mar 5, 2025
@ShinHeeEul ShinHeeEul merged commit 047be57 into main Mar 5, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

success 👍 해설을 보지 않고 풀었을 때 timeout ⌚ 목표 시간보다 오래걸렸을 때

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants