난이도: 골드 III
문제 링크: https://www.acmicpc.net/problem/16986
16986번: 인싸들의 가위바위보
두 사람이 같은 손동작을 내어 무승부가 발생할 경우 경기 진행 순서상 뒤인 사람이 이긴 것으로 간주함에 다시 한 번 유의한다. 구체적으로, 경기 진행 순서는 지우, 경희, 민호 순으로 고정되
www.acmicpc.net
문제 설명이 좀 많이 정신없는 문제입니다.
제가 읽으며 정리한 바는 다음과 같습니다.
- 세 사람 (지우, 경희, 민호)이 인싸들의 가위바위보를 한다. 여기서 우선순위가 정해져 있는데, 지우 < 경희 < 민호 순이다.
- 정보 a[i][j]가 주어지는데, 이는 손동작 i와 j가 인싸들의 가위바위보를 했을 때의 결과를 담고 있습니다.
- 2는 i의 승리, 0은 j의 승리를 뜻합니다.
- 1은 무승부를 뜻합니다. 무승부의 경우, 우선순위가 높은 쪽이 이겼다고 판정합니다.
- 경희, 민호가 차례로 낼 예정인 손동작이 각 20개씩 주어집니다.
- A와 B가 가위바위보를 했다면, 승자가 C와 가위바위보를 하는 식으로 이어갑니다. 목표 점수 K에 먼저 도달하는 사람이 승리합니다.
- 지우가 이미 냈던 손동작을 다시 내지 않으며 승부를 이어갔을 때, 먼저 목표 점수 k에 도달할 수 있는지 확인합니다.
N <= 9, K <= 6, 경희와 민호의 손동작이 각 20개이므로, brute-force 방법을 통해 완전탐색을 하여 답을 구할 수 있습니다.
저는 DFS를 통해 탐색을 진행하고, 도중에 단 한 번이라도 지우가 K에 먼저 도달한다면 탐색을 종료하도록 하였습니다.
또, 예외 사항으로, N < K일 경우 지우는 절대로 k점을 달성할 수 없기 때문에 0을 출력하도록 하였습니다.
단순 구현 문제가 늘 그렇듯 문제를 정확히 이해하는 데 시간이 오래 걸리고, 이를 오류 없이 구현하는데 시간이 오래 걸립니다.
저의 경우 문제를 제대로 이해했는지 확신이 들도록 몇 번 반복해서 읽었으며, 중간에 배열의 인덱스를 잘못 적는 버그가 있어서 해결에 조금 시간이 걸렸습니다.
인덱스 잘못 적은 것을 수정해 주었더니 쉽게 해결되었습니다.
'알고리즘, 문제해결 > 알고리즘 문제풀이' 카테고리의 다른 글
[백준 10258번] 스위치 배열 (0) | 2021.11.01 |
---|---|
[백준 1935번] 후위 표기식2 (0) | 2021.10.31 |
[프로그래머스] 멀쩡한 사각형 (0) | 2021.10.28 |
[백준 2831번] 댄스 파티 (0) | 2021.10.28 |
[백준 5214번] 환승 (0) | 2021.10.26 |
댓글