[boj][python] 14425 문자열 집합

ppparkta·2022년 12월 6일
1

Problem solving

목록 보기
52/65

14425 문자열 집합


딕셔너리를 이용해서 풀었다. 파이썬에서 딕셔너리=unordered_map 느낌인거같다. 자동정렬은 안되는 모양

처음에는

input=sys.stdin.readline

를 안썼다. 그랬더니 계속 틀려서 왜이러지 싶었는데 readline을 추가했더니 여전히 틀렸다(?)

<틀린코드>

import sys

input=sys.stdin.readline
n, m = map(int, input().split())
arr = {}
for i in range(n):
    s = input()
    arr[s] = 1
for i in range(m):
    s = input()
    if s not in arr:
        arr[s] = 1
    else:
        arr[s] += 1
ans = 0
for i in arr:
    if arr[i] > 1:
        ans += arr[i]-1
print(ans)

틀린만한 구석이 없는데 왜 틀리는걸까 고민하다보니, 문제에서 놓친 부분을 찾을 수 있었다. n번째 라인까지 중복이 허용되지 않지만 m번째 라인까지는 중복이 허용된다. 그래서 아마 n부터 m번째 라인 사이에 같은 단어가 여러번 들어간거 같다.

나는 모든 단어는 중복되지 않는다고 생각해서 틀렸다.

n=1, m=3 일 때

sooyang (문자열집합 원소)
bini
bini
bini

입력이 이런 식으로 들어오면 arr[bini]==3이 된다. 문자열 집합에 포함되지 않은 값이 2이상이 돼서 정답에 포함되는 것이다.

<맞은코드>

import sys

input=sys.stdin.readline
n, m = map(int, input().split())
arr = {}
for i in range(n):
    s = input()
    arr[s] = 1
for i in range(m):
    s = input()
    if s not in arr:
        continue
    else:
        arr[s] += 1
ans = 0
for i in arr:
    if arr[i] > 1:
        ans += arr[i]-1
print(ans)

딱 한 줄만 continue로 수정해주니 맞았다. 히히

profile
겉촉속촉

0개의 댓글