https://www.acmicpc.net/problem/14425
14425번: 문자열 집합
첫째 줄에 문자열의 개수 N과 M (1 ≤ N ≤ 10,000, 1 ≤ M ≤ 10,000)이 주어진다. 다음 N개의 줄에는 집합 S에 포함되어 있는 문자열들이 주어진다. 다음 M개의 줄에는 검사해야 하는 문자열들이 주어
www.acmicpc.net
문자열 집합
시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
2초 | 1546 MB | 8910 | 4856 | 3323 | 55.448% |
문제
총 N개의 문자열로 이루어진 집합 S가 주어진다.
입력으로 주어지는 M개의 문자열 중에서 집합 S에 포함되어 있는 것이 총 몇 개인지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 문자열의 개수 N과 M (1 ≤ N ≤ 10,000, 1 ≤ M ≤ 10,000)이 주어진다.
다음 N개의 줄에는 집합 S에 포함되어 있는 문자열들이 주어진다.
다음 M개의 줄에는 검사해야 하는 문자열들이 주어진다.
입력으로 주어지는 문자열은 알파벳 소문자로만 이루어져 있으며, 길이는 500을 넘지 않는다. 집합 S에 같은 문자열이 여러 번 주어지는 경우는 없다.
출력
첫째 줄에 M개의 문자열 중에 총 몇 개가 집합 S에 포함되어 있는지 출력한다.
예제 입력 1
5 11
baekjoononlinejudge
startlink
codeplus
sundaycoding
codingsh
baekjoon
codeplus
codeminus
startlink
starlink
sundaycoding
codingsh
codinghs
sondaycoding
startrink
icerink
예제 출력 1
4
풀이
1. 집합(문제에서의 S, 풀이에서의 x)에 포함되어야 하는 문자열의 개수(문제에서의 N, 풀이에서의 m)와 검사해야하는 문자열의 개수(문제에서의 N, 풀이에서의 n)가 한 줄에 공백을 통해 주어지기에 split()을 통해 공백을 기준으로 두 값을 받아오도록 하였다.
2. 받아오는 값에 혹여나 공백이 입력될 경우 제대로된 결과가 나오지 않을 수 있기에 rstrip()을 통해 받아오는 문자열에서의 공백을 제거했다.
3. 집합 S (풀이에서의 x)에 해당하는 문자열이 들어왔을 경우에만 확인하면 되기에, 검사해야하는 문자열이 들어왔을 경우 집합 S에 있을 때, 횟수가 하나씩 증가하도록 하였다.
*검사해야하는 문자열은 중복으로 주어지지 않는다는 말이 없기에, 검사해야하는 문자열의 집합과의 교집합으로는 제대로 검사를 할 수 없다.*
'코딩테스트 > 백준' 카테고리의 다른 글
[백준/Python] 16953_A→B_Python 풀이 (0) | 2022.05.04 |
---|---|
[백준/Python] 22864_피로도_Python 풀이 (0) | 2022.04.16 |
[백준/Python] 20154_이 구역의 승자는 누구야?!_Python 풀이 (0) | 2022.04.12 |
[백준/Python] 1927_최소 힙_Python 풀이 (0) | 2022.04.12 |
[백준/Python] 11279_최대값 힙_Python 풀이 (0) | 2022.04.11 |