문제
건우는 영어 시간마다 진저리가 난다. 이놈의 영어 문장은 도대체 어떨 때 쉼표(,)를 찍고, 어떨 때 안 찍는지 도저히 모르겠단다. 심지어 미국인, 영국인들도 실제로는 종종 비문법적으로 쉼표를 찍거나, 찍어야 할 곳에 찍지 않는다고 한다. 아주 난해하고 모호한 문법임이 분명하다. 이런게 왜 시험에 나오나 모르겠다.
그래서 건우는 딱딱 맞아 떨어지고, 규칙성 있는 새로운 영어 문법을 만들기로 했다. 건우에 따르면, 쉼표는 다음과 같은 규칙으로 찍는다. 참고로 여기서 “지문” 이란 것은 주어진 문장들 전체이며, “문장” 이란 것은, 점(.)으로 구분되는 단위이고, “단어” 라는 것은 공백( ) 또는 쉼표(,)으로 구분되는 단위이다.
1. 어떤 문장에서 어떤 단어 a 앞에 쉼표가 찍혀 있다면, 모든 문장에서 마찬가지로 단어 a 앞에 쉼표가 찍혀 있어야 한다(그 단어가 문장의 첫 단어라면 예외이다.)
2. 어떤 문장에서, 어떤 단어 a 뒤에 쉼표가 찍혀 있다면, 모든 문장에서 마찬가지로 단어 a 뒤에 쉼표가 찍혀 있어야 한다(마찬가지로 그 단어가 문장의 마지막 단어라면 예외이다.)
3. 1과 2를 더 이상 적용할 수 없을 때까지 반복 적용시킨다.
예를 들어 다음과 같은 문장을 보자.
go run program. run program, run. program better and better.
(프로그램을 돌려라. 돌려라, 돌려. 점점 나아지는 프로그램)
두 번째 문장의 program 뒤에 쉼표가 있기 때문에, 세 번째 문장의 program 뒤에도 쉼표가 붙어야 한다. 첫 번째 문장도 같은 룰을 쓰고 싶으나, program이 맨 마지막 단어이므로 쉼표를 붙일 필요가 없다. 또한 두 번째 문장의 run 앞에 쉼표가 있기 때문에 첫 번째 문장의 run 앞에도 쉼표가 붙는다. 두 번째 문장의 첫 번째 단어인 run 앞에는 쉼표가 붙지 않는 이유는 그 단어가 첫 번째 단어이기 때문이다. 마지막으로, 세 번째 문장에서 program 뒤에 쉼표가 붙음으로써, better 앞에도 쉼표가 붙었으므로, 맨 끝의 단어인 better 앞에도 쉼표가 붙는다. 더 이상 쉼표를 붙일 곳은 없다.
결과적으로 다음과 같다.
go, run program. run program, run. program, better and, better.
건우의 바램대로 문장을 바꿔주는 프로그램을 작성하라.
입력
출력
예제 #1
go run program. run program, run. program better and better.
go, run program. run program, run. program, better and, better.
예제 #2
one, two. one tree. four tree. four four. five four. six five.
one, two. one, tree. four, tree. four, four. five, four. six five.