본문 바로가기
알고리즘, 문제해결/알고리즘 문제풀이

[백준 16986번] 인싸들의 가위바위보

by 카펀 2021. 10. 29.

난이도: 골드 III

문제 링크: https://www.acmicpc.net/problem/16986

 

16986번: 인싸들의 가위바위보

두 사람이 같은 손동작을 내어 무승부가 발생할 경우 경기 진행 순서상 뒤인 사람이 이긴 것으로 간주함에 다시 한 번 유의한다. 구체적으로, 경기 진행 순서는 지우, 경희, 민호 순으로 고정되

www.acmicpc.net

 

백준 16986번 문제 인싸들의 가위바위보

문제 설명이 좀 많이 정신없는 문제입니다.

제가 읽으며 정리한 바는 다음과 같습니다.

  1. 세 사람 (지우, 경희, 민호)이 인싸들의 가위바위보를 한다. 여기서 우선순위가 정해져 있는데, 지우 < 경희 < 민호 순이다.
  2. 정보 a[i][j]가 주어지는데, 이는 손동작 i와 j가 인싸들의 가위바위보를 했을 때의 결과를 담고 있습니다.
    1. 2는 i의 승리, 0은 j의 승리를 뜻합니다.
    2. 1은 무승부를 뜻합니다. 무승부의 경우, 우선순위가 높은 쪽이 이겼다고 판정합니다.
  3. 경희, 민호가 차례로 낼 예정인 손동작이 각 20개씩 주어집니다.
  4. A와 B가 가위바위보를 했다면, 승자가 C와 가위바위보를 하는 식으로 이어갑니다. 목표 점수 K에 먼저 도달하는 사람이 승리합니다.
  5. 지우가 이미 냈던 손동작을 다시 내지 않으며 승부를 이어갔을 때, 먼저 목표 점수 k에 도달할 수 있는지 확인합니다.

N <= 9, K <= 6, 경희와 민호의 손동작이 각 20개이므로, brute-force 방법을 통해 완전탐색을 하여 답을 구할 수 있습니다.

저는 DFS를 통해 탐색을 진행하고, 도중에 단 한 번이라도 지우가 K에 먼저 도달한다면 탐색을 종료하도록 하였습니다.

또, 예외 사항으로, N < K일 경우 지우는 절대로 k점을 달성할 수 없기 때문에 0을 출력하도록 하였습니다.

 

단순 구현 문제가 늘 그렇듯 문제를 정확히 이해하는 데 시간이 오래 걸리고, 이를 오류 없이 구현하는데 시간이 오래 걸립니다.

저의 경우 문제를 제대로 이해했는지 확신이 들도록 몇 번 반복해서 읽었으며, 중간에 배열의 인덱스를 잘못 적는 버그가 있어서 해결에 조금 시간이 걸렸습니다.

 

채점 결과

인덱스 잘못 적은 것을 수정해 주었더니 쉽게 해결되었습니다.

 

댓글