게임을 만들 때는 문장의 틀을 미리 만들어 놓고, 거기 들어가는 단어만 바꿔서 출력할 문장을 조립하곤 한다. 그런데 한국어에는 은, 는, 이, 가, 을, 를 등의 조사가 있다. 조사 바로 앞에 나오는 글자의 받침이 있으면 은, 이, 을을 써야 하고, 받침이 없으면 는, 가, 를을 써야 한다.
이를테면, 다음 두 문장은 같은 틀에서 나왔고, 첫번째 문장에는 스켈레톤
을, 두번째 문장에는 뱀파이어
를 넣었을 뿐이지만 조사도 달라짐을 확인할 수 있다.
"스켈레톤을(를) 쓰러뜨렸다!" 와 같은 식으로도 쓸 수는 있지만, 게임이 세련되지 않게 느껴지므로 조사 처리를 제대로 해주는 것이 좋다. 이런 조사가 몇 종류 더 있지만 이 문제에서는 은, 는, 이, 가, 을, 를만 처리하도록 하자.
각 줄마다 다음 세 가지 중의 하나가 입력된다. 모든 줄의 길이 합은 줄바꿈을 제외하고 유니코드 기준 자를 넘지 않는다.
set 변수이름 변수내용
: <변수이름> 의 내용을 <변수내용> 으로 설정한다. 변수이름은 자 이하의 알파벳 소문자로만 구성된다. 변수내용은 100자 이하의 UTF-8 인코딩된 한글로만 구성된다. 기존에 같은 이름으로 설정되었던 변수가 있다면 기존의 내용을 새 값으로 덮어씌운다.print 문장틀
: 문장틀에서 {변수이름} 이 나타나면 그 내용을 해당하는 변수내용으로 치환하고, 바로 뒤에 나오는 조사가 올바른 조사가 아니면 위에 설명한 조사 규칙에 따라 올바르게 바꾸자. 그리고 그 결과를 출력한다. {변수이름} 바로 뒤에 은, 는, 이, 가, 을, 를 중 하나가 반드시 나온다고 생각해도 된다.end
: 처리를 종료한다.입력 내용을 위에서부터 순차적으로 처리하면서 print
문이 나타날 때마다 위의 입력 형식에서 지시한 대로 한 줄씩 출력한다. 출력의 인코딩은 UTF-8이다.
출력할 것이 없는 경우는 없다고 생각해도 된다.
set player 세라 set item 주문카운터 print {player}가 {item}을 획득했다! set player 레미엘 set item 와이즈맨 print {player}이 {item}를 무덤에 버렸다! end
세라가 주문카운터를 획득했다! 레미엘이 와이즈맨을 무덤에 버렸다!
입력 케이스들은 다음과 같은 종류로 구별되며, 한 종류의 케이스를 다 맞추어야 그 종류에 배정된 점수를 받을 수 있다.
종류 1: 80점
각 줄이 항상 다음 세 가지 형태 중 하나임
set 변수이름 변수내용
(변수이름
과 변수내용
은 최대 자)print {변수이름}은
(변수이름
은 최대 자)end
종류 2: 120점
문제의 원래 제한조건 이외의 추가된 제한이 없음.
print
명령의 문장틀에서 언급된 {변수이름}
에 아직 값이 설정되지 않은 경우는 없다고 생각해도 된다. 또한 중괄호는 print
명령의 변수이름 지정 용도로만 쓰이며, 중첩되거나 쌍이 맞지 않는 경우는 없다고 생각해도 된다.end
명령은 입력의 마지막 줄에 단 한 번 등장한다고 생각해도 된다.