만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

Lost is Close to Lose

면접 대비

시간 제한1초메모리 제한1024 MB

요약
여러 줄의 글에서 단어의 핵심 문자열마다 삭제, 삽입, 치환, 인접한 두 글자 바꿈 중 한 번의 연산으로 이어지는 다른 핵심 문자열을 찾습니다.
난이도

보통10점 중 4점

유형
문자열, 해시맵
정답자
아직 제출이 없습니다

문제

Better Documents Inc.는 차세대 워드 프로세서를 검토하고 있다. 요즘 거의 모든 워드 프로세서에는 맞춤법 검사기(Spell Checker)가 들어 있다. 하지만 BDI는 이를 진짜 오타 검사기(Typo Checker)로 바꾸려 한다. 맞춤법 검사기를 믿고 글을 쓰다 보면, 의도한 단어는 아니지만 철자는 맞는 다른 단어가 되어 버리는 실수("typos")를 누구나 한 번쯤 겪는다. BDI는 AI로 단어의 문맥을 살펴서, 그 단어가 어색하며 철자가 비슷한 다른 단어여야 했는지를 판단하려 한다.

이 작업의 첫 단계로, 실제 글에서 철자가 비슷한 단어가 얼마나 흔한지 알아보려 한다. 문단 단위의 텍스트를 읽고, 그 안에 나오는 철자가 비슷한 단어의 목록을 출력하는 프로그램을 작성하라.

이 프로그램에서 단어는 공백이 아닌 문자가 최대한 길게 이어진 문자열 중, 알파벳을 하나 이상 포함하는 것을 말한다. 공백은 빈칸 또는 줄바꿈 문자(\r 또는 \n)다. 단어의 핵심은 단어에서 알파벳이 아닌 문자를 모두 지우고, 대문자를 소문자로 바꾼 결과다.

두 단어는 다음 변환 중 하나를 한 번 적용해서 한 단어의 핵심을 다른 단어의 핵심으로 바꿀 수 있을 때 철자가 비슷하다고 본다.

  • 문자 하나를 삭제한다.
  • 알파벳 하나를 삽입한다.
  • 문자 하나를 다른 알파벳으로 바꾼다.
  • 인접한 두 문자의 위치를 서로 바꾼다.

입력

입력은 1줄에서 100줄 사이의 텍스트와, "***"만 적힌 한 줄의 입력 종료 표시로 이루어진다.

각 텍스트 줄은 줄바꿈 문자를 제외하고 0자에서 80자 사이의 ASCII 문자로 이루어진다.

출력

텍스트에 나오는 단어 핵심 가운데 철자가 비슷한 단어를 하나 이상 가진 것마다 다음 내용으로 이루어진 한 줄을 출력한다.

  1. 그 단어의 핵심
  2. 콜론(":")과 빈칸 하나
  3. 철자가 비슷한 모든 단어 핵심의 목록. 중복이 없어야 하며, 콜론 왼쪽의 핵심은 포함하지 않는다. 알파벳 순으로 정렬하고 단어 사이는 빈칸 하나로 구분한다.

출력하는 줄은 콜론 왼쪽의 단어 핵심을 기준으로 알파벳 순으로 정렬한다.

입력에 철자가 비슷한 단어가 없으면 "***"만 적힌 한 줄을 출력한다.

예제3

  1. 예제 1

    입력
    Lost is Close to Lose
    
    "Better Documents Inc. wants to add Typo Checking in to the
    next generation of word processors," he said.
    ***
    
    예상 출력
    close: lose
    he: the
    in: inc is
    inc: in
    is: in
    lose: close lost
    lost: lose
    the: he
    
  2. 예제 2

    입력
    The fox said, "When?"
    "Not till 12 o'clock", replied the hen.
    "That clock is stopped, it will never strike.", he said.
    ***
    
    예상 출력
    clock: oclock
    he: hen the
    hen: he when
    is: it
    it: is
    oclock: clock
    the: he
    till: will
    when: hen
    will: till
    
  3. 예제 3

    입력
    There are no similar words
    in this input set.
    ***
    
    예상 출력
    ***