728x90
n, m = map(int, input().split())
# 딕셔너리에 듣도 못한 사람의 이름, 수 입력받기
names = {}
for i in range(n):
name = input()
names[name] = 1
ans = []
for j in range(m):
name = input()
if names.get(name) == None: # 딕셔너리에 있는 이름일 경우 듣보잡
continue
else:
ans.append(name)
# 결과 출력
print(len(ans))
for answer in ans:
print(answer)
왜 틀렸다고 나오는지 모르겠다ㅠ
혹시나 이유를 아시는 분은 댓글 달아주시면 좋을 것 같습니다ㅠ
다른 분들의 풀이를 검색해봤더니 set 집합 자료형을 통해 교집합을 구하는 방식으로 구하셨더라.
# 백준 집합과 맵 : 1764번 - 듣보잡
n, m = map(int, input().split()) # 듣도 못한 사람의 수, 보지 못한 사람의 수 입력받기
name1 = set()
name2 = set()
for i in range(n):
name = input()
name1.add(name)
for i in range(m):
name = input()
name2.add(name)
ans = sorted(list(name1 & name2))
print(len(ans))
for i in ans:
print(i)
set 집합 자료형은 중복을 허용하지 않고 순서가 없다.
s1 = set([1, 2, 3, 4])
s1.add(5) # {1, 2, 3, 4, 5}로 값 1개 추가됨
s1.update([6, 7, 8]) # {1, 2, 3, 4, 5, 6, 7, 8}로 값 여러 개 추가가능
s1.remove(7) # {1, 2, 3, 4, 5, 6, 8}로 값 제거가능
- 교집합
# 교집합 구하기
s1 = set([1, 2, 3, 4])
s2 = set([3, 4, 5, 6])
# 교집합 {3, 4} 출력됨
print(s1 & s2)
print(s1.intersection(s2))
- 합집합
# 합집합 구하기
s1 = set([1, 2, 3, 4])
s2 = set([3, 4, 5, 6])
# 합집합 {1, 2, 3, 4, 5, 6} 출력됨
print(s1 | s2)
print(s1.union(s2))
- 차집합
# 차집합 구하기
s1 = set([1, 2, 3, 4])
s2 = set([3, 4, 5, 6])
# 차집합 {1, 2} 출력됨
print(s1 - s2)
print(s1.difference(s2))
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준 4344] C++ - 소수점 출력하기 (0) | 2024.07.09 |
---|---|
[백준 2557] C++ - Hello World!😄 (0) | 2024.07.02 |
#백준 10816, 파이썬 / 딕셔너리 이용 (0) | 2022.10.12 |
#백준 1620, 파이썬 / sys.stdin.readline (0) | 2022.10.06 |
#백준 14425, 파이썬 (0) | 2022.10.06 |