시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
---|---|---|---|---|---|
1 초 | 128 MB | 32 | 4 | 4 | 40.000% |
마술사 현우는 마술 대회에 출전하게 되었다. 그에게는 그를 따르는 충실한 조수가 있다. 하지만, 어제 식중독에 걸려서 같이 출전할 수 없게 되었다.
현우는 조수를 뽑을 시간이 없어서 조수가 하는 일을 대신해 주는 로봇을 만들었다. 이제 로봇에게 현우가 하는 카드 마술을 설명해주려고 한다.
일단 조수는 청중에게 표준 52-카드 덱에서 5장의 카드를 고르게 한다. 그 다음 그 카드를 확인하고, 그 중 한 장을 청중에게 돌려주고, 나머지 카드를 한 장씩 특정한 순서로 현우에게 넘겨준다. 이제 현우는 아수라발발타를 외치고.... 현우는 청중이 가지고 있는 카드가 무엇인지 알아낸다.
현우가 카드를 확인하는 방법은 다음과 같다.
카드가 덱에 들어있는 순서는 카드의 숫자에 의해 결정되고, 숫자가 같은 경우에는 무늬에 의해서 결정된다. 따라서, 순서는 AC, AD, AH, AS, 2C, 2D, ..., KH, KS (C: 클럽, D: 다이아, H: 하트, S: 스페이드) 와 같이 된다.
1. 첫 번째 카드의 무늬와 숫자를 기억한다.
2. 나머지 세 카드 중에 가장 작은 카드를 찾고, 이 카드의 위치를 가장 첫 번째 카드의 숫자에 더한다.
3. 세 카드 중에서 가장 큰 두 개의 카드의 순서가 위에서 설명한 것과 맞지 않다면 2번째 과정의 결과에 3을 더한다.
4. 청중이 들고 있는 카드는 세 번째 과정까지 계산된 첫 번째 카드의 수와 무늬를 가지고 있다. (만일 수가 K를 넘어간다면, 수를 K만큼 내린다)
예를 들어 QH, 10D, 10C, 4D가 손에 들어왔다면, 뒤의 세 개 중 가장 작은 카드는 4D이고, 위치는 3이다. 그리고 10D와 10C가 순서를 지키지 않고 있으므로 첫 번째 카드에 6을 더하는데, 이 수가 K를 넘어가므로 K만큼 빼주면, 청중이 가지고 있는 카드가 5H임을 알 수 있다.
현우를 위해 조수의 일을 수행해주는 프로그램을 작성하자
첫 번째 줄에 테스트 케이스의 수 T가 주어진다. 각 테스트 케이스는 카드 5장이 공백을 사이에 두고 한 줄에 주어진다.
각 테스트 케이스에 대해 조수가 청중에게 돌려줄 카드와 나머지 카드를 현우에게 돌려줄 순서대로 공백을 사이에 두고 출력한다.
2 QH 5H 10C 4D 10D 5C KS 8D 7H 6C
5H QH 10D 10C 4D 6C 5C 7H 8D KS
ICPC > Regionals > North America > Greater New York Region > 2004 Greater New York Programming Contest E번