시간 제한
메모리 제한
시간 제한
1초
메모리 제한
128 MB
스타일리시는 프로그래밍 언어이다.
스타일리시의 문법은 알파벳으로 이루어진 이름과 세 가지 유형의 괄호, 마침표 ('.'), 새 줄로 이루어져 있다.
괄호는 소괄호 ('('와 ')'), 중괄호 ('{'와 '}'), 대괄호 ('['와 ']')로 총 세 가지이며, 항상 쌍을 이루도록 사용해야 한다. 또, 중첩될 수도 있다. 다른 프로그래밍 언어와 다르게, 스타일리시는 공백 대신에 마침표('.')를 사용한다. 다음은 스타일리시 프로그램의 예이다.
(Welcome.to.........Stylish){Stylish.is.....[.(a.programming.language.fun.to.learn).......].....Maybe.[.......It.will.be.an.official.ICPC.language.......].....}위의 예제에서 볼 수 있듯이, 스타일리시 프로그램은 마침표를 사용해서 인덴트를 한다. 각 줄의 인덴트의 양이란, 줄의 앞에 있는 연속되는 마침표의 개수이다.
잘 인덴트된 스타일리시 프로그램의 인덴트 양은 인덴트 스타일 (R,C,S)를 이용해서 결정한다. (1 ≤ R,C,S ≤ 20) 여기서 R은 소괄호, C는 중괄호, S는 대괄호에 해당하는 인덴트의 양이다.
잘 인덴트된 프로그램의 각 줄의 인덴트의 양은 R(ro - rc) + C(co - cc) + S(so - sc)로 결정할 수 있다. 여기서 ro, co, so은 이전 줄까지 나온 여는 소괄호, 중괄호, 대괄호의 개수이고, rc, cc, sc는 닫는 소괄호, 중괄호, 대괄호의 개수이다. 잘 인덴트된 스타일리시 프로그램의 첫 줄에는 항상 인덴트가 없다.
위에 나와있는 예제의 인덴트 스타일은 (R,C,S) = (9,5,2) 이다. 첫째 줄에는 소괄호만 하나 있다. 따라서, 두 번째 줄의 인덴트의 양은 9(1 - 0) + 5(0 - 0) + 2(0 - 0) = 9이다. 처음 네 줄에는 여는 소괄호가 두 개, 여는 중괄호와 대괄호가 각각 한 개, 닫는 소괄호가 두 개 있다. 따라서, 다섯 번째 줄의 인덴트의 양은 9(2 - 2) + 5(1 - 0) + 2(1 - 0) = 7이다.
잘 인덴트된 스타일리시 프로그램 P와 그렇지 않은 프로그램 Q가 주어졌을 때, P의 인덴트 스타일을 구해 Q에 적용하는 프로그램을 작성하시오.
입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 p와 q가 주어진다. (1 ≤ p, q ≤ 10)
다음 p개 줄에는 스타일리시 마스터가 작성한 잘 인덴트된 프로그램 P가 주어지며, 그 다음 q개 줄에는 다른 프로그램 Q가 주어진다. 두 프로그램의 각 줄은 적어도 1글자 이상이며, 80글자를 넘지 않는다. Q의 모든 줄은 마침표로 시작하지 않는다.
마지막 줄에는 0이 두 개 주어진다.
각 테스트 케이스에 대해서, P의 인덴트 스타일을 구해 Q에 적용한 뒤, 각 줄의 인덴트의 양을 공백으로 구분해 출력한다. 만약, 인덴트의 양을 유일하게 결정할 수 없는 줄이 있다면, 그 줄은 -1을 출력한다.
(Welcome.to.........Stylish){Stylish.is.....[.(a.programming.language.fun.to.learn).......].....Maybe.[.......It.will.be.an.official.ICPC.language.......].....}