코딩테스트

백준 1764

eunGI 2022. 9. 27. 13:16

시간초과난 내 코드

# 백준 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