시간초과난 내 코드
# 백준 1764
import sys
n, m = map(int, input().split())
count = []
nolisten = []
nosee = []
for _ in range(n):
nolisten.append(sys.stdin.readline().strip())
for _ in range(m):
nosee.append(sys.stdin.readline().strip())
for i in nolisten:
for j in nosee:
if i == j:
count.append(i)
break
print(len(count))
for i in count:
print(i)
nolisten과 nosee의 교집합 구해서 풀면 되는 문제이다.
파이썬에서 교집합 구하는 방법 -> set 자료형 이용
*set 자료형
- 집합 관련된 것을 처리하기 위한 자료형
- 집합 자료형은 s1 = set(리스트)와 같은 방식으로 만들고 있음
- s1 = set("문자열") 형태로 하면 s1 = {"문", "자", "열} 형태로 저장됨
- set 자료형은 중복이 없음, 순서가 없음
- 교집합, 차집합, 합집합을 구할때 유용하게 사용 가능
- 교집합은 s1 & 2 또는 s1.intersection(s2)
- 합집합은 s1 | s2 또는 s1.union(s2)
- 차집합은 s1 - s2 또는 s1.differnce(s2)
- 값 추가 방법 -> s1.add(값), 여러개 추가 시에는 s1.update(리스트)
- 값 제거 방법 -> s1.remove(값)
# 백준 1764
import sys
n, m = map(int, input().split())
nolisten = []
nosee = []
for _ in range(n):
nolisten.append(sys.stdin.readline().strip())
for _ in range(m):
nosee.append(sys.stdin.readline().strip())
answer = sorted(list(set(nolisten) & set(nosee)))
print(len(answer))
for i in answer:
print(i)
생각해보니까 사전 순으로 출력해야되는데 그거 빼먹어서 맨 위에 코드에서 sorted도 추가함 (문제 꼼꼼하게 읽자!!!!!!!!!!!!!!!!!!!!!)
'코딩테스트' 카테고리의 다른 글
| 백준 1302 + 파이썬 딕셔너리 복습 (0) | 2022.09.27 |
|---|---|
| 백준 10825 (0) | 2022.09.27 |
| 백준 1427 (0) | 2022.09.22 |
| 백준 1181 (0) | 2022.09.22 |
| 백준 10989 [계수 정렬] (0) | 2022.09.22 |