마크업 언어는 텍스트 파일의 서식을 지정하는 데 도움을 주는 컴퓨터 언어입니다. 특별한 키워드로 텍스트를 표시하여 글꼴, 페이지 스타일, 문단 스타일 등을 제어할 수 있습니다. TeX, troff, HTML이 마크업 언어의 예입니다.
이러한 텍스트는 맞춤법 검사를 적용하기 어렵기 때문에, 보통 마크업을 제거하고 순수한 텍스트만 남기는 전용 처리기가 필요합니다. 이 문제에서는 작은 마크업 언어를 위한 그런 처리기를 작성해야 합니다. 프로그램은 마크업이 포함된 텍스트를 읽어, 모든 마크업을 적용하고 제거한 순수 텍스트를 출력합니다.
모든 명령은 \ 문자로 시작합니다. \ 바로 뒤의 문자가 아래 표에 있는 명령이 아니라면, 그 문자는 순수 텍스트로 그대로 출력됩니다. 예를 들어 마크업 \\는 하나의 \를 출력합니다.
| 명령 | 의미 |
|---|---|
\b | 굵게(bold)를 켜거나 끕니다(처음에는 꺼짐). |
\i | 기울임(italic)을 켜거나 끕니다(처음에는 꺼짐). |
\s | 글꼴 크기를 설정합니다. s 바로 뒤에 선택적으로 숫자가 옵니다. 숫자가 없으면 이전 크기로 되돌립니다. |
\* | 마크업 처리를 켜거나 끕니다. 처리가 꺼져 있으면 마크업은 있는 그대로의 문자로 취급됩니다(처음에는 켜짐). |
\s 뒤의 숫자는 소수점을 포함할 수 있어 12, 9.5, 11., .5는 모두 올바른 숫자입니다.
출력은 순수 텍스트이므로 굵게, 기울임, 크기 명령은 눈에 보이는 문자를 만들지 않고 그대로 소비됩니다. 처리가 꺼져 있는 동안에는 \*만 여전히 인식되어(처리를 다시 켤 수 있도록) \를 포함한 나머지 모든 문자는 있는 그대로 출력됩니다.
입력은 위 언어의 마크업이 포함된 순수 텍스트입니다. 파일이 시작될 때 마크업 처리는 켜져 있습니다. 파일의 끝(EOF)에 도달할 때까지 처리하십시오.
모든 마크업을 적용하고 제거한 순수 텍스트를 출력하십시오. 서식 명령은 제거하고, 일반 문자와 줄바꿈은 입력에 나타난 그대로 유지해야 합니다.