주석 제거
시간 제한1초메모리 제한128 MB
작은따옴표 문자열에서 두 개의 작은따옴표는 문자 하나를 뜻한다는 규칙을 지키며 파스칼 주석을 지우고 공백을 하나로 줄인다.
문제
임의의, 문법적으로 올바른 파스칼(Pascal) 프로그램이 주어진다. 이 프로그램을 압축하라. (이 문제를 풀기 위해 파스칼 언어를 알 필요는 없다. 필요한 정보는 모두 아래에 주어진다.) 다음 규칙에 따라 프로그램을 압축한다.
- 문자열 상수 안에 있는 공백을 제외하고, 연속된 공백은 모두 하나의 공백으로 바꾼다. 또한 각 줄의 맨 앞에 있는 공백과 맨 뒤에 있는 공백은 모두 제거한다.
파스칼에서 문자열은 작은따옴표(
')로 둘러싸인다. 문자열 안에서 작은따옴표 두 개가 연속으로 나오면 이는 작은따옴표 한 개를 나타낸다. 예를 들면 다음과 같다.
문자열은 줄 경계를 넘을 수 없다.'This is a string' 'isn''t this fun?' - 모든 주석은 하나의 공백으로 바꾼다. (이 공백이 다른 공백과 맞닿게 되면, 위 규칙에 따라 두 공백은 하나로 압축된다.)
파스칼에서 주석은
(* ... *)또는{ ... }로 둘러싸인다. 예를 들면 다음과 같다.
주석은 여러 줄에 걸칠 수 있다. 주석은 중첩될 수 없다.(* This is a comment! *) { A comment with a '*)'. } (* A (* comment *) - 완전히 빈 줄, 즉 (원래부터든 주석을 제거한 뒤든) 공백만으로 이루어진 줄은 모두 제거한다.
- 입력에는 탭 문자나 그 밖의 출력 불가능한 문자가 없다(줄 구분 문자는 예외).
- 입력의 어떤 줄도 255자보다 길지 않다.
입력
문법적으로 올바른 파스칼 프로그램 하나가 표준 입력으로 주어진다. 입력에는 탭 문자나 그 밖의 출력 불가능한 문자가 없으며(줄 구분 문자는 예외), 어떤 줄도 255자보다 길지 않다.
출력
위 규칙을 적용하여 얻은, 압축된 파스칼 프로그램을 출력한다. 그 외에는 아무것도 출력하지 않는다.