만드는 중입니다

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

Soundex 색인

면접 대비

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

요약
대문자 이름마다 Soundex 코드(첫 글자와 숫자 세 자리)를 만들고, 모음을 건너뛰며 같은 코드가 연속될 때 하나로 합쳐 이름과 코드를 정해진 열에 출력합니다.
난이도

쉬움10점 중 3점

유형
문자열, 구현, 시뮬레이션
정답자
아직 제출이 없습니다

문제

Soundex 색인 시스템은 발음이 비슷하거나 철자가 비슷한 이름을 부호화하여 쉽게 검색할 수 있도록 개발되었다. 미국 인구조사국에서 사용해 왔으며, 일부 주에서는 운전면허증 번호를 부호화할 때 이 시스템을 사용한다. 여러분의 과제는 이름을 한 줄에 하나씩 차례로 읽어 각 이름에 대응하는 soundex 부호를 계산하고, 출력 파일에 이름과 그 soundex 부호를 한 줄에 하나씩 쓰는 것이다.

이름은 길이가 1에서 20인 대문자 알파벳(ASCII 값 65부터 90까지)으로 이루어진다. 길이가 20보다 짧은 이름은 빈칸으로 채우지 않는다. 따라서 이름은 대문자로만 구성된다.

Soundex 부호를 만드는 방법:

Soundex 부호는 항상 문자 하나와 숫자 세 자리로 이루어진다. 다음은 soundex 부호화 규칙이다.

  1. 이름의 첫 글자는 soundex 부호에서 첫 번째이자 유일한 문자로 나타난다.

  2. 문자 A, E, I, O, U, Y, W, H는 부호화하지 않지만, 연속된 부호열을 끊는다(다음 규칙 참고).

  3. 나머지 문자는 모두 부호화한다. 단, 같은 부호 숫자로 부호화될 문자가 바로 앞에 올 때는 제외한다. 첫 글자도 포함한다.

  4. soundex 부호 대응표는 다음과 같다.

    부호해당 문자와 동등 문자
    1B, P, F, V
    2C, S, K, G, J, Q, X, Z
    3D, T
    4L
    5M, N
    6R
  5. 부호가 짧으면 뒤에 0을 붙여 모든 이름이 문자 하나와 숫자 세 자리로 부호화되도록 한다.

  6. 부호가 더 길면 세 번째 숫자 뒤를 자른다.

입력

입력은 한 줄에 하나씩 주어지는 이름 목록이다. 각 이름은 20자를 넘지 않으며, 대문자만 사용된다고 가정할 수 있다. 프로그램은 파일의 끝을 감지할 때까지 이름을 계속 읽는다.

출력

출력은 이름 열과 그에 대응하는 soundex 부호 열로 이루어진다. 출력의 첫 줄 10번째 칸에 "NAME"을, 35번째 칸에 "SOUNDEX CODE"를 쓴다. 제목 줄 다음에는 이름과 soundex 부호를 한 줄에 하나씩 쓰며, 이름은 10번째 칸에서 시작하고 soundex 부호는 35번째 칸에서 시작한다. 마지막 이름 바로 다음 줄 끝에 "END OF OUTPUT"이라는 주석을 20번째 칸에서 시작하여 쓴다.

예제1

  1. 예제 1

    입력
    LEE
    KUHNE
    EBELL
    EBELSON
    SCHAEFER
    SCHAAK
    
    예상 출력
             NAME                     SOUNDEX CODE
             LEE                      L000
             KUHNE                    K500
             EBELL                    E140
             EBELSON                  E142
             SCHAEFER                 S160
             SCHAAK                   S200
                       END OF OUTPUT