백준 14425번 : 윤년 문제풀이 [파이썬]
<문제>
14425번 문제의 내용은 아래와 같습니다.
문자열 집합
문제
총 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
<작성한 코드>
#문자열 집합
import sys
N, M = map(int, sys.stdin.readline().split())
s = set()
for _ in range(N):
s.add(sys.stdin.readline())
cnt = 0
for _ in range(M):
a = sys.stdin.readline()
if a in s:
cnt += 1
print(cnt)
<코드 풀이>
일단 본 문제는 직전 포스팅에서 사용한 dictionary가 아닌 set을 사용했다.
dictionary는 key와 value값이 짝을 이뤄서 존재하는 구조이고,
set은 key 값만 존재하는 구조이다.
본 문제에는 set이 더 알맞다고 생각해 set으로 문제를 풀었다.
import sys
N, M = map(int, sys.stdin.readline().split())
s = set()
for _ in range(N):
s.add(sys.stdin.readline())
우선 입력값을 받을 준비를 위와 같이 해주었다.
s라는 이름의 set 자료를 담을 변수를 만들어주었고,
반복문을 돌면서 그 s변수에 입력값들을 저장해주었다.
cnt = 0
for _ in range(M):
a = sys.stdin.readline()
if a in s:
cnt += 1
print(cnt)
다음으로는 다른 반복문을 돌면서
입력받은 문자열이 set 자료에 포함되어있는지를 확인하고,
포함되어있다면 cnt의 값을 1씩 증가시켜주면서 그 개수를 세어주었다.
마지막으로는 문제에서 요구하는 cnt의 값을 출력하기만하면 된다.
'백준 알고리즘' 카테고리의 다른 글
백준 10816번 숫자카드2 문제풀이, 파이썬 (0) | 2023.03.08 |
---|---|
백준 1620번 나는야 포켓몬 마스터 이다솜 문제풀이, 파이썬 (2) | 2023.03.08 |
백준 10815번 숫자 카드 문제풀이, 파이썬 (0) | 2023.03.07 |
백준 18870번 좌표 압축 문제풀이, 파이썬 (0) | 2023.03.06 |
백준 10814번 나이순 정렬 문제풀이, 파이썬 (0) | 2023.03.06 |