| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 2 초 | 1024 MB | 1013 | 210 | 182 | 22.778% |
세종이는 가위바위보 머신을 개발했다. 머신을 작동시키면 머신 가위바위보 대결을 즐길 수 있다. 한 번의 대결은 총 100ドル$번의 가위바위보 게임으로 이루어지며, 각 게임의 결과는 플레이어에게 공개되지 않는다. 대신 100ドル$번의 가위바위보 게임을 모두 진행한 후 플레이어는 100ドル$번의 게임 중 이긴 게임의 수를 알 수 있다.
가위바위보의 꽃은 무작위성이지만, 난수 생성 알고리즘을 믿지 못하는 세종이는 아예 머신이 낼 손 모양의 순서를 모두 고정해 버렸다. 이를 본 영재는 세종이와 다음과 같은 내기를 하기로 했다.
영재가 내기에서 이길 수 있게 도와주자!
첫째 줄에 영재가 머신과의 첫 대결에서 이긴 게임의 수를 나타내는 정수 $K$가 주어진다. $(0 \leq K \leq 100)$
다음을 표준 출력 스트림(stdout)으로 한 줄에 출력해 머신과의 대결을 진행할 수 있다.
? hand: 영재의 손 모양을 hand로 바꾸고 다음 대결을 진행한다. hand는 0, 2, 5로만 이루어진 100ドル$자 길이의 문자열이어야 한다. hand의 $i$번째 글자는 영재가 다음 대결의 $i$번째 게임에서 낼 손 모양을 의미하며, 0은 바위, 2는 가위, 5는 보를 의미한다.출력한 후에는 반드시 표준 출력 버퍼를 비워야 한다. 출력 버퍼를 비우지 않는 경우 예상 밖의 결과를 얻을 수 있음에 유의하라.
대결의 결과는 영재가 이긴 게임의 수를 의미하는 하나의 정수로 주어진다. 만약 머신의 손 모양을 알아낸 경우, ! machine_hand를 출력하고 프로그램을 종료할 수 있다. machine_hand는 머신의 손 모양을 뜻하는 문자열로, 0, 2, 5로만 이루어진 100ドル$자 길이의 문자열이어야 한다. machine_hand의 $i$번째 글자는 머신이 한 대결의 $i$번째 게임에서 내는 손 모양을 의미하며, 0은 바위, 2는 가위, 5는 보를 의미한다.
채점 프로그램은 machine_hand와 실제 머신이 내는 손 모양이 모두 일치할 때 이를 정답으로 처리한다. 만약 머신과의 대결 횟수가 101ドル$번을 초과하거나, 출력 형식을 지키지 않거나, machine_hand와 실제 머신이 내는 손 모양이 다른 경우 이를 오답으로 처리한다.
그레이더는 비적응적(non-adaptive)으로, 처음에 정한 손 모양을 상황에 따라 바꾸지 않는다.
3 4 3 5 ᅠ
? 22022 ? 25022 ? 22052 ! 55205
예제는 한 대결이 5번의 게임으로 이루어진 경우를 가정하며, 실제 문제와는 다름에 유의하라. 또한 예제는 입출력 작동 방식의 이해를 돕기 위해 의도적으로 줄 간격을 조정했으며, 실제 입출력과는 다름에 유의하라.
언어별로 표준 출력 버퍼를 비우는 방법은 다음과 같다.
fflush(stdout)std::cout << std::flushSystem.out.flush()sys.stdout.flush()School > 세종과학예술영재학교 > SASA Programming Contest 2023 F번