needmoreeasy EN 한국어
배우기

42 — 단어 세기: 어느 말이 몇 번 나왔나

★★★★☆ (4/5)목록과 글
선수 지식
40 — CSV, 41 — 표
결과물
글을 낱말로 나누고 낱말마다 몇 번 나왔는지 세는 프로그램

「어느 말이 몇 번 나왔나」는 이름마다 숫자 하나입니다. 그래서 표입니다. 어려운 곳은 한 군데뿐입니다 — 처음 보는 낱말과 이미 본 낱말을 다르게 다루어야 합니다.

단계

  1. 글을 낱말로 나눕니다:

    글은 사과 배 사과 감
    말들은 글을 빈칸으로 나눈 것
    말들 개수 말해줘
    
    실행해 보기 →

    4가 나옵니다. 같은 낱말이 두 번 있어도 목록에는 두 번 다 들어 있습니다.

  2. 처음 보는 낱말은 1로 시작합니다:

    세기표는 빈 표
    세기표에 사과를 1로 넣어
    세기표의 사과 말해줘
    
    실행해 보기 →
  3. 이미 본 낱말은 꺼내서 하나 올리고 다시 넣습니다. 세 걸음입니다:

    세기표는 빈 표
    세기표에 사과를 1로 넣어
    지금까지는 세기표의 사과
    지금까지에 1 더해
    세기표에 사과를 지금까지로 넣어
    세기표의 사과 말해줘
    
    실행해 보기 →

    2가 나옵니다.

  4. 둘을 가르는 것은 「이미 있는가」입니다:

    세기표는 빈 표
    말은 사과
    만약에 세기표에 말이 있으면
        두 번째 이상입니다 말해줘
    아니면
        처음 봅니다 말해줘
    끝
    
    실행해 보기 →

    처음 봅니다가 나옵니다.

  5. 전체입니다. 낱말을 하나씩 보면서 둘 중 하나를 합니다:

    글은 사과 배 사과 감 배 사과
    말들은 글을 빈칸으로 나눈 것
    세기표는 빈 표
    말들의 말마다 반복해
        만약에 세기표에 말이 있으면
            지금까지는 세기표의 말
            지금까지에 1 더해
            세기표에 말을 지금까지로 넣어
        아니면
            세기표에 말을 1로 넣어
        끝
    끝
    세기표의 이름마다 반복해
        이름 말해줘
        세기표의 이름 말해줘
    끝
    세기표 개수 말해줘
    
    실행해 보기 →

    사과 3·배 2·감 1이 나오고, 마지막 3은 서로 다른 낱말이 몇 가지인지입니다.

직접 해보기

같은 낱말이 대문자로도 나오면 따로 세어집니다. 세기 전에 말 소문자로를 이름에 담아 그것을 세면 하나로 합쳐집니다. 그리고 두 번 이상 나온 낱말만 보여 주려면, 마지막 훑기에서 만약에로 걸러 내면 됩니다.

배운 것

  • 「이름마다 숫자 하나」는 표입니다.
  • 처음 보는 것과 이미 본 것을 …에 …가 있으면으로 가릅니다.
  • 표 안의 숫자를 올리는 것은 꺼내기·더하기·다시 넣기 세 걸음입니다.
  • 표의 개수는 항목 수가 아니라 서로 다른 이름의 수입니다.

GitHub에서 이 문서 보기