Skip to content

Conversation

@oncsr
Copy link
Contributor

@oncsr oncsr commented Sep 9, 2025

🧷 문제 링크

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

🧭 풀이 시간

70분

👀 체감 난이도

✏️ 문제 설명

길이 N인 배열 A와 정수 M이 주어진다.
이 배열에 작업을 원하는 만큼 수행할 수 있다.

  • 작업 : A[i]를 (A[i]*2) % M으로 변환

작업을 모두 끝낸 뒤, 배열에서 가장 많이 등장하는 수의 등장 횟수 최댓값과 그 상태로 만들기 위한 작업의 최소 횟수를 구해보자.

🔍 풀이 방법

  • 그래프

M이 백만까지라서, 정점 번호가 0 ~ M-1인 그래프로 모든 작업을 표현했다.

이 그래프에서 방향성을 뺐을 때 같은 컴포넌트에 속한다면 모두 같은 수로 만들어줄 수 있다.
-> 컴포넌트에 존재하는 수의 최대 개수에 대해, 작업 횟수를 최소로 만들어주면 된다.

위상 정렬로 사이클에 도달할 때까지 작업 횟수를 계속 쌓아간다.
사이클에 모인 수의 개수에 따라서 최솟값을 구해줬다.

⏳ 회고

사이클에 도달하지 않고도 모두 모일 수 있는 경우를 생각하지 못했다.

@oncsr oncsr self-assigned this Sep 9, 2025
@oncsr oncsr added the success 👍 해설을 보지 않고 풀었을 때 label Sep 9, 2025
@ShinHeeEul ShinHeeEul merged commit f9156b6 into main Sep 9, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

success 👍 해설을 보지 않고 풀었을 때

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants