Lisp에서 C로
면접 대비시간 제한1초메모리 제한1024 MB
한 줄로 주어진 중첩된 리스프 함수 호출을 쉼표와 괄호를 사용하는 C 함수 호출 문법으로 바꾼다.
문제
C는 70년대에 만들어진 오래된 프로그래밍 언어지만, 그 나이에도 불구하고 아주 널리 쓰인다. C에서는 이름이 namn인 함수를 호출할 때 namn(parameter1, parameter2, ..., parameterN) 형태로 쓴다. 각 매개변수는 변수이거나(여기서는 a-z 문자의 나열로 이루어진다) 또 다른 함수 호출일 수 있다. 예를 들어 완전한 함수 호출은 다음과 같다.
a(b, c(d), e(f, g(h, i, j)))
매개변수가 없는 함수 호출은 funktion()으로 쓴다.
Lisp는 50년대에 만들어진 또 다른 프로그래밍 언어다. Lisp에서는 이름이 namn인 함수를 호출할 때 (namn parameter1 parameter2 ... parameter N) 형태로 쓴다. 여기서도 매개변수는 변수이거나 함수 호출일 수 있다. 위에 나온 C의 함수 호출은 Lisp에서 다음과 같이 쓸 수 있다.
(a b (c d) (e f (g h i j)))
매개변수가 없는 함수 호출은 (funktion)으로 쓴다.
이 언어사가 왜 필요할까? 심사위원 Simon은 C를 좋아하지만 Lisp는 싫어한다. 반대로 심사위원 Johan은 Lisp를 좋아하지만 C는 싫어한다.
그래서 Johan이 자신의 모든 예시 풀이를 Lisp로 작성하자 Simon은 매우 화가 났고, Johan의 프로그램을 C로 변환하려 한다. Lisp 형식의 함수 호출이 주어졌을 때 C 형식의 함수 호출로 변환하는 프로그램을 작성해서 Simon을 도와라.
입력
Lisp 형식으로 올바르게 작성된 함수 호출 한 줄이 주어진다. 길이는 최대 자다. 모든 매개변수는 정확히 하나의 공백으로 구분되며, 필요하지 않은 곳에 여분의 공백은 없다.
출력
C 형식으로 변환된 함수 호출 한 줄을 출력한다. 예시처럼 각 쉼표 뒤에 공백을 하나 넣는다.