트랙
/
SQLite
SQLite
/
연습 문제
/
단어 세기
단어 세기

단어 세기

어려움

소개

고등학생에게 영어를 외국어로 가르치고 있어요.

커리큘럼 전체를 TV 프로그램에 맞춰 구성하기로 했어요. 어떤 단어가 쓰이고, 얼마나 자주 반복되는지 분석해야 하죠.

그러면 가장 단순한 프로그램부터 시작하고, 시간이 지나면서 난이도를 조금씩 높여 갈 수 있어요.

지침

드라마 자막에서 각 단어가 몇 번 나오는지 세는 것이 과제예요.

이 드라마들의 자막은 ASCII 문자만 사용해요.

등장인물들은 _they're_나 it's 같은 축약형을 쓰면서 편한 영어로 자주 말해요. 이런 축약형은 두 단어(예: we are)에서 나왔지만, 축약형(we're)은 한 단어로 취급해요.

단어는 어떤 형태의 구두점(예: ":", "!", "?")이나 공백 문자(예: "\t", "\n", " ")로 구분할 수 있어요. 단어를 구분하지 않는 유일한 구두점은 축약형에 쓰이는 아포스트로피예요.

숫자도 단어로 봐요. 자막에 _It costs 100 dollars._라고 나오면 _100_은 그 자체로 하나의 단어가 돼요.

단어는 대소문자를 구분하지 않아요. 예를 들어, 다음 문장에서 _you_라는 단어는 세 번 나와요:

You come back, you hear me? DO YOU HEAR ME?

결과에서 단어 개수의 순서는 상관없어요.

지금까지 이야기한 요소를 여러 개 담은 예시를 볼까요:

  • 단순한 단어
  • 축약형
  • 숫자
  • 대소문자를 구분하지 않는 단어
  • 단어를 구분하는 구두점(아포스트로피 포함)
  • 단어를 구분하는 여러 형태의 공백 문자

"That's the password: 'PASSWORD 123'!", cried the Special Agent.\nSo I fled.

이 자막의 매핑 결과는 다음과 같아요:

123: 1
agent: 1
cried: 1
fled: 1
i: 1
password: 2
so: 1
special: 1
that's: 1
the: 2

result 열에는 JSON으로 인코딩된 객체가 들어가야 하며, 각 단어가 키이고 개수가 정수예요.

예를 들어, 위 문장을 살펴봐요: "That's the password: 'PASSWORD 123'!", cried the Special Agent.\nSo I fled. 이 입력의 result는 다음과 같아야 해요:

{"123":1,"agent":1,"cried":1,"fled":1,"i":1,"password":2,"so":1,"special":1,"that's":1,"the":2}

테이블 스키마

CREATE TABLE "word-count" (
    sentence TEXT NOT NULL,
    result   TEXT               -- json object
);

JSON 문서

JSON 함수와 연산자


출처

고전적인 장난감 문제지만, Go Tour에서 보고 다시 떠올렸어요.
GitHub에서 편집 링크가 새 창이나 탭에서 열려요
SQLite Exercism

단어 세기 문제를 시작해 볼 준비가 됐나요?

Exercism에 가입하고 SQLite 트랙을 연습 문제 81개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.