비교적 쉬운 문제였다. (내가 풀 정도^^)
여기서 나는 '듣'과 '보'의 중복 요소를 set(집합)을 사용하여
굉장히 편하게 풀었다.
근데 그냥 내 머리로만 한 건 아니고.. 구글링을 살짝 해서
잊지 않게 정리하려 한다.
일단 아래는 내가 푼 전체 코드이다.
import sys
input = sys.stdin.readline
# 듣 N
# 보 M
N, M = map(int, input().split())
D = [input().strip() for i in range(N)] // strip() 사용하여 문자열 앞 뒤 공백 제거
B = [input().strip() for j in range(M)]
DB = sorted(set(D) & set(B)) // 사전 순 정렬
print(len(DB)) // 중복 요소 개수
# print(DB)
for i in DB:
print(i)
일단 듣도 못한은 D, 보도 못한은 B로 두고 배열에 넣었다.
겹치는 요소를 찾기 위해 배열 반복문을 돌리면 시간 복잡도가 높을 것이라 생각하고
구글링을 해보니 set을 사용하면 간편하게 & 만으로 중복 요소를 찾을 수 있음을 알게 됐다.
이제 set(집합)을 정리해보자.
set(집합)
python에서 집합은 고유한 요소의 모음이다.
- 순서가 없다 (인덱스로 접근하지 못한다)
- 중복이 허용되지 않는다
- 요소는 변경 불가능한 자료형만 사용할 수 있다
set_example = set([1, 2, 3, 4, 5])
print(set_example)
>>> {1, 2, 3, 4, 5}
set은 중복이 허용되지 않으므로
중복된 요소를 합쳐줄 수 있다.
1. 교집합
set1 = set([1,2,3,4,5,6])
set2 = set([3,4,5,6,8,9])
print(set1 & set2)
print(set1.intersection(set2))
-----------------------------------------------------------
{3, 4, 5, 6}
{3, 4, 5, 6}
2. 합집합
set1 = set([1,2,3,4,5,6])
set2 = set([3,4,5,6,8,9])
print(set1 | set2)
print(set1.union(set2))
-----------------------------------------------------------
{1, 2, 3, 4, 5, 6, 8, 9}
{1, 2, 3, 4, 5, 6, 8, 9}
3. 차집합
set1 = set([1,2,3,4,5,6])
set2 = set([3,4,5,6,8,9])
print(set1 - set2)
print(set1.difference(set2))
-----------------------------------------------------------
{1, 2}
{1, 2}
중복 요소 찾기 set과 list 비교
A = [1, 3, 5, 7, 9]
B = [10, 5, 1, 2, 4]
C = set(A) & set(B) // set 사용
D = [i for i in A if i in B] // list 사용
print(C)
print(D)
-----------------------------------------------------------
print(C) ==>{1, 5}
print(D) ==> [1, 5]
이 방법으로 중복 요소를 찾았고,
set은 순서가 없고 인덱스로 접근할 수 없으므로
sorted(set)을 통해 문제의 '사전순 출력' 조건을 충족했다.
'Languages > Python' 카테고리의 다른 글
[Python] leetcode | 20. Valid Parentheses 괄호 짝 맞추기 | Stack (0) | 2024.05.26 |
---|---|
[Python] 프로그래머스 | 같은 숫자는 싫어 | append (0) | 2024.05.24 |
[Python] [백준 #20291] Counter로 배열 요소 개수 세기 (0) | 2024.05.10 |
[Python] 파이썬 sys.stdin.readline() 입력 받기 (0) | 2024.04.02 |
[Python] 파이썬의 나누기(몫/나머지) // 연산자와 % 연산자 (0) | 2023.04.10 |