Umm 코드
시간 제한2초메모리 제한512 MB
u, m, 문장부호로만 이루어진 단어에서 u와 m만 모아 이어 붙인 뒤, 7비트씩 끊어 ASCII 문자로 해독한다.
문제
프로그래밍 동아리의 현 회장인 Norbit은 매주 동아리 모임에서 연설을 한다. 가볍게 듣는 사람들은 Norbit의 웅변 실력에 실망한다. 특히 Norbit은 연설 도중 "umm" 같은 추임새를 넣으며 자주 머뭇거린다.
그러나 여러분은 가볍게 듣는 사람이 아니다. 여러분은 컴퓨터 과학자다! 여러분은 Norbit의 연설에서 이상한 패턴을 발견했다. Norbit의 추임새를 모아 놓으면 이진 코드가 된다! u를 1로, m을 0으로 바꾸면 비밀 메시지를 이루는 7비트 이진 ASCII 코드가 나온다.
예를 들어 문자 'a'의 ASCII 코드는 97이고, 이는 이진수 1100001, umm 코드로는 "uummmmu"가 된다. umm 코드는 연설 안에서 쪼개질 수 있다. 예를 들어 'a'의 부호화는 "uum", "mmm", "u" 세 마디에 흩어져 나타날 수 있다. 그 사이에 umm 코드가 아닌 다른 단어들이 끼어 있을 수도 있다.
이제 Norbit의 비밀을 알아냈으니, 과거 연설 기록을 다시 읽으며 교묘하게 숨겨진 메시지를 해독한다.
입력
길이가 S인 한 줄의 입력이 주어지며, 끝은 줄바꿈 문자 하나다. 줄바꿈 문자 앞의 입력에는 ASCII 범위 32 – 126, 즉 공백(' ')부터 물결표('~')까지의 문자만 들어올 수 있다.
"단어"란 공백으로 구분된 문자들의 나열을 말한다. 어떤 단어에 소문자 u와 m 외에 문자나 숫자가 하나도 없으면 그 단어는 umm 코드 메시지의 일부다. 어떤 단어에 소문자 u와 m이 아닌 숫자나 문자가 들어 있으면, 그 단어에 u나 m이 들어 있더라도 umm 코드 메시지의 일부가 아니다. umm 코드 메시지의 일부인 단어에는 구두점(문자, 숫자, 공백이 아닌 모든 것)이 들어 있을 수 있다. umm 코드 메시지를 해독할 때는 u와 m 문자만 고려하고 구두점은 고려하지 않는다. M을 umm 코드 메시지 전체의 길이(u와 m 문자만 센 길이)라고 하자. M ≥ 7이고 M은 7로 나누어떨어진다.
20 ≤ S ≤ 500 000.
출력
해독한 메시지를 출력한다. 이 문제의 채점은 대소문자를 구분한다. 출력해야 하는 각 문자는 입력과 같은 ASCII 범위에 있다.