| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1 초 | 256 MB | 606 | 14 | 11 | 2.007% |
과거로부터 오랫동안 전승돼 온 전통 놀이인 ”마이티”를 아는가? 민규는 고등학교 때 마이티 게임을 하면서 놀곤 했다. 하지만 대학에 입학하고 바쁜 나날을 보내다 보니 어느새 우리들이 마이티를 잊고 살아가고 있다는 것을 발견했다.
대대로 전승돼 온 전통 놀이인 마이티를 잊는다니 있을 수 없는 일이다. 그래서 민규는 설날에 가족들과 마이티 게임을 하려고 했지만, 아뿔싸. 그 간단한 마이티의 규칙을 잊어버린 것이 아니겠는가? 그래서 민규는 당신에게 도움을 요청하였다. 5명의 플레이어가 처음에 받은 카드들과 게임 과정에서 내려놓은 모든 카드가 규칙에 맞춰 주어진다. 대통령 팀이 승리하는지 패배하는지 민규에게 알려주는 프로그램을 만들어 보자.
게임의 규칙은 아래와 같다. 마이티는 전통 놀이인 만큼 지역별로 다양한 변형된 규칙이 있지만, 아래에 설명된 것을 기준으로 한다.
입력으로 주어지는 모든 카드는 글자 두 개로 표현된다. 컬러 조커는 JC, 흑백 조커는 JB이며 이외의 숫자 카드는 문양+숫자로 표현된다. 스페이드는 S, 다이아몬드는 D, 하트는 H, 클로버는 C이다. 문양별로 잭은 J, 퀸은 Q, 킹은 K이다. 예외로 숫자 1(ACE)는 1이 아닌 A로 불린다. 다음 예시를 참고하자. 클로버 3 = C3, 스페이드 A(일반적으로 마이티) = SA, 하트 킹=HK, 클로버 1=CA.
처음 5개의 줄에는 각 플레이어가 분배받은 카드가 입력으로 주어진다. i번째 줄에는 i번째 플레이어가 받은 카드가 공백을 사이에 두고 주어진다. 입력에 나타나지 않은 카드 4장이 남은 카드가 된다.
6번째 줄에는 첫 번째 플레이어부터 공백을 사이에 두고 순서대로 공약이 주어진다. 공약은 기루다 문양 + 카드 획득 목표로 구성된 단어이다. 문양은 동일하게 S, D, H, C로 표현되며 no-기루다 공약인 경우 문양이 X로 대체된다. 예시로 ”하트 13”은 H13으로 표현된다. 만약 선거에 출마하지 않은 경우 그 플레이어의 공약은 N이다. 공약은 유효한 공약만이 주어짐이 보장된다. H12, CO2와 같은 유효하지 않은 공약은 주어지지 않는다. 카드 획득 목표는 12 이상 20 이하의 정수이다.
7번째 줄에는 대통령이 라운드 시작 전에 내려놓은 카드 4장이 공백을 사이에 두고 주어진다.
8번째 줄에는 대통령이 프렌드의 카드로 지정한 카드가 입력된다.
9번째 줄부터 10개의 줄에는 각 라운드에서 규칙에 따라 5명의 플레이어가 순서대로 낸 카드가 공백을 사이에 두고 주어진다. 총 다섯 장의 카드가 주어지며, 순서대로 첫 번째 카드는 1번 플레이어가 낸 카드이며 마지막 카드는 5번 플레이어가 낸 카드이다. 해당 라운드가 어느 플레이어부터 시작했는지는 주어지지 않고, 이전의 경기 기록으로부터 계산해야 한다. 컬러 조커와 흑백 조커는 동일하게 JC/JB로 입력이 주어지지만, 규칙 5.6으로 인해 라운드의 첫 카드가 조커인 경우에는 다르게 입력된다.
다이아를 내도록 강제한 컬러 조커는 JD, 하트를 내도록 강제한 컬러 조커는 JH, 다이아 or 하트를 내도록 강제한 컬러 조커는 JDH로 주어진다. 스페이드를 내도록 강제한 흑백 조커는 JS, 클로버를 내도록 강제한 흑백 조커는 JC, 스페이드/클로버를 내도록 강제한 흑백 조커는 JSC로 주어진다. 라운드의 첫 카드가 조커인 경우엔 JD, JH, JDH, JS, JC, JSC 중의 하나로 입력이 주어짐이 보장된다.
입력으로 주어지는 카드들은 위에서 설명한 종류 중 하나이며, XJ와 같이 위의 범주에 들어가지 않는 카드는 입력되지 않음을 보장한다. 또한, JSC와 같이 조커를 첫 라운드에 사용할 때만 나올 수 있는 입력은 라운드의 첫 입력에 해당하는 경우에만 입력으로 주어짐이 보장된다.
출력은 한 줄로 이루어진다. 만약 초반에 분배된 카드가 불공정하게 분배되어 딜 미스를 선언해야 한다면 Deal Mistake를 출력한다. 문제에서 보장한 사항이 아니라면 모든 예외가 가능하며 (카드 중복, 규칙을 위반한 플레이어 등) 이러한 경우엔 Rule Violation을 출력한다. 만약 Rule Violation이 덱 배분(입력의 첫 5줄)에서 일어났다면 Rule Violation을 출력하고, 만약 그 이후에서 룰 위반이 발생한 경우 Deal Mistake가 우선된다. 즉, 딜 미스된 덱이 입력된 뒤에 룰 위반이 일어나도 출력은 Deal Mistake가 되어야 한다.
위의 두 경우에 해당하지 않고 정상적으로 게임이 진행되어 종료된 경우에는 승리한 팀과 여당이 획득한 점수에서 공약을 뺀 값을 공백으로 구분하여 출력한다. 여당이 승리할 시 Government Party를 출력하고, 야당이 승리할 시 Opposition Party를 출력한다.
DK H3 C10 H6 DJ C8 C2 D6 C9 D9 S8 DQ CJ H4 JC SJ S4 D3 HK C3 CQ HQ SQ H2 D7 S10 DA SK D4 C5 D10 S3 CK S5 C4 H9 D5 D2 JB S9 H5 HJ H8 D8 S7 H7 S2 HA CA SA H13 N H15 H14 N SK DA D4 H10 SA C8 CJ C7 C4 CA H6 JC HQ H9 H8 H3 H4 H2 D10 HJ C2 HK C6 D5 HA DK SJ SQ S3 S2 C10 C3 C5 CK H5 C9 S4 CQ D2 H7 DJ DQ D7 JB D8 D9 S8 S6 S5 S7 D6 D3 S10 S9 SA
2 Government Party
여당(Rulling Party)가 17점, 야당이 3점을 획득하였다. 여당의 공약은 H15였는데, 여당이 17점을 획득했으므로 여당의 승리이다.
S6 C4 DK C10 C7 SJ H7 S4 C3 S7 C9 C6 CK C5 H5 DJ H3 D10 S9 D2 D8 D6 S5 H8 HQ H4 S3 D4 SQ DQ D3 H9 D9 JB S8 H2 HJ S10 SK S2 HA D5 C2 H6 C8 CA JC D7 H10 HK N X13 N N S14 H3 C5 H5 DJ H3 C10 CK H8 D9 C8 DK D2 D8 D3 JC C3 C9 DQ S8 CA H7 DA HQ HJ HK SJ S9 H4 JB H6 S4 C6 S5 H9 H10 C7 CQ D4 H2 C2 C4 CJ S3 S10 D5 S7 SA SQ SK D7 S6 D10 D6 S2 HA
-2 Opposition Party
여당은 11점, 야당은 9점을 획득하였다. 그러나 여당의 공약이었던 카드 13장에는 미치지 못했으므로 야당이 승리한다.
H4 SK H7 D8 JB H10 JC H2 C4 H9 HK DA D4 C7 C6 S8 S10 C8 DQ SA D10 D7 D5 HJ S5 SJ D2 S4 C5 H8 H6 HA S6 C3 CA HQ S2 D6 CQ C10 C9 D3 S3 S9 DK DJ SQ H3 D9 H5 N C14 N N S14 D3 H3 S3 C2 D8 D8 D4 D5 D6 D9 SK S8 S4 S6 S7 H7 HK HJ H6 H5 H9 SA S5 S2 S9 C4 C6 C5 CQ C9 H10 C8 D7 C10 CJ JB S10 SJ HQ SQ H2 DA H8 HA CK JC DQ D2 C3 DK H4 C7 D10 CA DJ
Deal Mistake
Contest > BOJ User Contest > 유틸컵 > 제1회 유틸컵 - Chapter 1 H번