Lost is Close to Lose
면접 대비시간 제한1초메모리 제한1024 MB
여러 줄의 글에서 단어의 핵심 문자열마다 삭제, 삽입, 치환, 인접한 두 글자 바꿈 중 한 번의 연산으로 이어지는 다른 핵심 문자열을 찾습니다.
문제
Better Documents Inc.는 차세대 워드 프로세서를 검토하고 있다. 요즘 거의 모든 워드 프로세서에는 맞춤법 검사기(Spell Checker)가 들어 있다. 하지만 BDI는 이를 진짜 오타 검사기(Typo Checker)로 바꾸려 한다. 맞춤법 검사기를 믿고 글을 쓰다 보면, 의도한 단어는 아니지만 철자는 맞는 다른 단어가 되어 버리는 실수("typos")를 누구나 한 번쯤 겪는다. BDI는 AI로 단어의 문맥을 살펴서, 그 단어가 어색하며 철자가 비슷한 다른 단어여야 했는지를 판단하려 한다.
이 작업의 첫 단계로, 실제 글에서 철자가 비슷한 단어가 얼마나 흔한지 알아보려 한다. 문단 단위의 텍스트를 읽고, 그 안에 나오는 철자가 비슷한 단어의 목록을 출력하는 프로그램을 작성하라.
이 프로그램에서 단어는 공백이 아닌 문자가 최대한 길게 이어진 문자열 중, 알파벳을 하나 이상 포함하는 것을 말한다. 공백은 빈칸 또는 줄바꿈 문자(\r 또는 \n)다. 단어의 핵심은 단어에서 알파벳이 아닌 문자를 모두 지우고, 대문자를 소문자로 바꾼 결과다.
두 단어는 다음 변환 중 하나를 한 번 적용해서 한 단어의 핵심을 다른 단어의 핵심으로 바꿀 수 있을 때 철자가 비슷하다고 본다.
- 문자 하나를 삭제한다.
- 알파벳 하나를 삽입한다.
- 문자 하나를 다른 알파벳으로 바꾼다.
- 인접한 두 문자의 위치를 서로 바꾼다.
입력
입력은 1줄에서 100줄 사이의 텍스트와, "***"만 적힌 한 줄의 입력 종료 표시로 이루어진다.
각 텍스트 줄은 줄바꿈 문자를 제외하고 0자에서 80자 사이의 ASCII 문자로 이루어진다.
출력
텍스트에 나오는 단어 핵심 가운데 철자가 비슷한 단어를 하나 이상 가진 것마다 다음 내용으로 이루어진 한 줄을 출력한다.
- 그 단어의 핵심
- 콜론(":")과 빈칸 하나
- 철자가 비슷한 모든 단어 핵심의 목록. 중복이 없어야 하며, 콜론 왼쪽의 핵심은 포함하지 않는다. 알파벳 순으로 정렬하고 단어 사이는 빈칸 하나로 구분한다.
출력하는 줄은 콜론 왼쪽의 단어 핵심을 기준으로 알파벳 순으로 정렬한다.
입력에 철자가 비슷한 단어가 없으면 "***"만 적힌 한 줄을 출력한다.