문제 4221 · 바이트 V
카페의 시음 카드 묶음
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
작은 카페가 새로운 음료를 소개하는 시음 행사를 열었다. 각 시음 잔에는 음료 종류를 나타내는 카드가 한 장씩 붙어 있다. 카드에는 영문 소문자로 이루어진 짧은 코드가 적혀 있으며, 같은 음료 종류의 카드에는 항상 같은 코드가 적혀 있다. 서로 다른 음료 종류에는 서로 다른 코드가 적혀 있으므로 코드만으로 종류를 구별할 수 있다. 행사가 끝난 뒤 직원은 회수한 카드들을 한 묶음으로 모았다. 한 음료가 여러 잔 제공되었다면 같은 코드의 카드가 여러 장 들어 있을 수 있다. 반면 준비한 음료라도 회수된 카드가 한 장도 없다면 이 묶음에는 그 코드가 나타나지 않는다. 직원이 알고 싶은 것은 행사에서 준비한 전체 종류 수나 제공한 잔 수가 아니라, 회수한 카드 묶음에서 확인할 수 있는 음료 종류 수다. 두 카드의 코드는 길이와 모든 위치의 문자가 같을 때에만 같은 코드로 본다. 예를 들어 a와 aa는 서로 다른 코드이며, ab와 ba도 서로 다른 코드다. 한 코드가 몇 번 등장했는지는 종류 수에 영향을 주지 않는다. 같은 코드의 카드를 처음 발견했을 때만 새로운 종류 하나를 확인한 것으로 계산한다. 입력에는 회수한 카드의 코드가 카드 한 장마다 한 줄씩 주어진다. 카드의 순서는 임의로 섞여 있으므로 같은 코드가 연속해서 등장한다는 보장은 없다. 떨어져 있는 두 카드라도 코드가 같다면 하나의 음료 종류로 세어야 한다. 입력에 나타나지 않은 코드를 추측하여 종류 수에 더하지 않는다. 회수한 카드 중 서로 다른 코드가 모두 몇 개인지 구하는 프로그램을 작성한다. 카드가 모두 같은 코드라면 답은 1이고, 모든 카드의 코드가 서로 다르면 답은 카드 수와 같다.
입력
첫째 줄에 카드 수 N이 주어진다. N은 정수이며 1 ≤ N ≤ 100,000이다. 다음 N개 줄에 카드 코드가 하나씩 주어진다. 코드는 영문 소문자로만 이루어지며 길이는 1 이상 2 이하이다.
출력
회수한 카드에 나타나는 서로 다른 코드의 개수를 정수 하나로 출력한다.
예제 입력 1
7 a bc a cb bc aa a
예제 출력 1
4
예제 입력 2
4 zz zz zz zz
예제 출력 2
1
예제 입력 3
1 q
예제 출력 3
1
힌트 펼치기
- 이미 확인한 코드가 다시 등장해도 종류 수는 늘어나지 않는다.
- 집합에는 같은 원소가 여러 번 저장되지 않는다.
관련 서재 장
알고리즘 분류
집합문자열풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |