만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

Memory

시간 제한1초메모리 제한256 MB

요약
뒤집힌 카드 50장(25쌍)으로 메모리 게임을 하며 faceup(C)를 호출해 각 짝을 찾아 25개의 사탕을 모두 받게 한다.
난이도

쉬움10점 중 3점

유형
시뮬레이션, 구현, 배열, 해시맵
정답자
아직 제출이 없습니다

문제

Memory라는 게임을 50장의 카드로 한다. 각 카드에는 A부터 Y까지(ASCII 65부터 89까지)의 문자 하나가 앞면에 인쇄되어 있고, 각 문자는 정확히 두 장의 카드에 나타난다. 카드는 무작위로 섞여 뒷면이 위로 오도록 책상에 놓인다.

Jack은 카드 두 장을 뒤집어 문자를 보이게 하면서 게임을 한다. Jack은 뒤집힌 두 카드에서 어떤 문자의 두 장을 처음으로 모두 보게 되면 그 문자에 대해 어머니에게 사탕을 하나 받는다. 예를 들어 Jack이 M이 적힌 두 카드를 처음으로 모두 뒤집으면 사탕을 하나 받는다. 두 문자가 같든 다르든 Jack은 두 카드를 다시 뒷면이 위로 오게 뒤집는다. 이 과정은 Jack이 25개의 사탕(문자마다 하나씩)을 받을 때까지 반복된다.

여러분은 게임을 진행하는 프로시저 play를 구현해야 한다. 구현은 채점기가 구현한 프로시저 faceup(C)를 호출해야 한다. C는 뒤집고 싶은 카드를 나타내는 1부터 50까지의 수이다. 그 카드는 현재 뒤집혀 있으면 안 된다. faceup(C)는 카드 C에 인쇄된 문자를 반환한다.

faceup을 두 번 호출할 때마다 채점기는 두 카드를 자동으로 다시 뒷면이 위로 오게 뒤집는다.

프로시저 play는 Jack이 25개의 사탕을 모두 받은 뒤에만 종료할 수 있다. Jack이 마지막 사탕을 받은 순간 이후에도 faceup(C)를 호출할 수 있다.

예제1

  1. 예제 1

    입력
    ABCDEFGHIJKLMNOPQRSTUVWXYABCDEFGHIJKLMNOPQRSTUVWXY
    
    예상 출력
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    1
    26
    2
    27
    3
    28
    4
    29
    5
    30
    6
    31
    7
    32
    8
    33
    9
    34
    10
    35
    11
    36
    12
    37
    13
    38
    14
    39
    15
    40
    16
    41
    17
    42
    18
    43
    19
    44
    20
    45
    21
    46
    22
    47
    23
    48
    24
    49
    25
    50