똥그래미 코딩공장
백준 1764번(듣보잡) 파이썬 본문
https://www.acmicpc.net/problem/1764
1764번: 듣보잡
첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다.
www.acmicpc.net
이 문제는 나에게 새로운 지식을 알려준 문제이다. 이 문제는 공통된 문자열을 찾는 문제인데 집합으로 문제를 풀어야한다.
나는 set()함수가 중복제거만 해주는 함수인줄 알았지만 집합으로 엮을 수도 있다는 것을 이 문제를 통해 알았다.
이 문제는 집합에서 '교집합'의 특징을 이용해야 한다.
아래의 코드를 보며 설명을 이어가겠다.
n,m = map(int,input().split())
set1=set()
set2=set()
for _ in range(n):
set1.add(input())
for _ in range(m):
set2.add(input())
ans = sorted(list(set1&set2))
print(len(ans))
for i in range (len(ans)):
print(ans[i])
각각 se1, set2를 집합으로 선언해주고 반복문을 써서 입력받은 다음 &를 써줘서 교집합을 찾아준다 | 은 합집합이고 - 는 차집합이다. set() 함수의 자세한 내용은 아래의 링크를 참고하면 된다.
18. set(집합)
## 1. set(집합) - set은 수학에서 이야기하는 집합과 비슷합니다. - 순서가 없고, 집합안에서는 unique한 값을 가집니다. - 그리고 mutable 객체입니다.…
wikidocs.net
set() 함수의 사용법만 안다면 이 문제는 누워서 떡 먹기이다. (사실 누워서 떡먹는건 매우 위험한 행동이다 ㅋㅋ;;;)
'Algorithm' 카테고리의 다른 글
| 백준 11724(연결 요소의 개수) 파이썬 (0) | 2023.01.07 |
|---|---|
| 백준 1260번(DFS와BFS) 파이썬 (0) | 2023.01.06 |
| 백준 1439번(뒤집기) 파이썬 (0) | 2022.12.27 |
| 백준 1120(문자열) 파이썬 (0) | 2022.12.22 |
| 백준 2579번(계단 오르기) 파이썬 (0) | 2022.12.22 |