알고리즘/BOJ

백준 1285번 동전 뒤집기

꾸준함. 2024. 3. 30. 11:00

문제 링크입니다: https://www.acmicpc.net/problem/1285

 

1285번: 동전 뒤집기

첫째 줄에 20이하의 자연수 N이 주어진다. 둘째 줄부터 N줄에 걸쳐 N개씩 동전들의 초기 상태가 주어진다. 각 줄에는 한 행에 놓인 N개의 동전의 상태가 왼쪽부터 차례대로 주어지는데, 앞면이 위

www.acmicpc.net

 

얼핏 보면 시간 복잡도가 O(2^40)으로 보여 시간 안에 풀지 못할 문제처럼 보이는 문제였습니다.

하지만 다음과 같이 문제를 쪼개면 시간 내 풀 수 있는 문제입니다. (시간 복잡도: 400 * 2^20)

  • 가능한 모든 조합에 대해 열을 직접 뒤집어 본다 (시간 복잡도: O(2^20))
  • 열은 이미 뒤집혔고 행을 뒤집을 차례인데 행 내 뒷면 동전 개수를 파악하면 직접 뒤집을 필요가 없습니다. (시간 복잡도: O(20 * 20))
    • 앞면이 더 많으면 뒤집을 필요가 없고
    • 뒷면이 더 많으면 뒤집는다
    • 위 내용을 토대로 직접 뒤집지 않고 `sum += min(temp, N - temp)`로 대체 가능

 

 

개발환경:Visual Studio 2022

지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

 

참고

인프런 10주완성-코딩테스트 - 큰돌 강사님

반응형

'알고리즘 > BOJ' 카테고리의 다른 글

백준 14405번 피카츄  (0) 2024.03.31
백준 14391번 종이 조각  (0) 2024.03.31
백준 19942번 다이어트  (1) 2024.03.30
백준 1189번 컴백홈  (0) 2024.03.27
백준 14620번 꽃길  (0) 2024.03.26