본문 바로가기
ⓒⓞⓓⓘⓝⓖⓣⓔⓢⓣ/ⓟⓨⓣⓗⓞⓝ

[python] 백준 1822번 차집합

by heaven00 2021. 8. 9.
728x90

 

 

 

사실 굉장히 쉬운 문제였는데 배운 점이 많다고 느낀 문제

잊지 않고 기억하려고 포스팅한다

 

 


 

 

코드

N = map(int, input().split())

A =set(map(int, input().split()))
B = set(map(int, input().split()))

res = []
for n in A:
    if n not in B:
        res.append(n)

res.sort()
print(len(res))

if len(res) !=0:
    print(*(res))

 

 

 

1.

일단 if A not in B 라는 코드를 이론은 배웠는데 한번도 써보지 못했다

그런데 이번 기회에 써보게 되서 뜻깊었다!

 

그리고 종종 파이썬에 if A in B 등등의 쉬운 조건문을 사용할 수 있다는 점을 잊게되서 아쉬웠는데 다시 한번 학습한 기분이 들어서 좋았다

 

 

2.

계속 런타임 오류가 났다

원래 set을 잘 안쓰고 list를 쓰는 편인데, list가 시간이 많이 걸리나보다

그래서 set을 쓸 수 있으면 쓰는 연습을 해야겠다고 느꼈다

 

 

3.

N = map(int, input().split())

A =set(map(int, input().split()))
B = set(map(int, input().split()))

ress = A-B

res = sorted(ress)
print(len(res))

if len(res) !=0:
    print(*(res))

이렇게 코드를 바꿔도 잘 돌아간다!

set을 정렬하면 list로 변경이 된다고 한다!

이거도 처음 알았다

 

 

 

4. 

포스팅을 하게 된 가장 큰 이유

*(res) 와 res를 print하는 차이!

 

만약 리스트에 1,2,3,4 가 담겨있다면

 

*(res)를 하면 1 2 3 4  라고 프린트 되고

res를 하면 [1,2,3,4] 로 프린트 된다

 

나중에 print할 때 너무 편할 것 같다!

절대 잊어버리지 말아야지!

 

 

 

 

 

 

https://www.acmicpc.net/problem/1822

 

1822번: 차집합

첫째 줄에는 집합 A의 원소의 개수 n(A)와 집합 B의 원소의 개수 n(B)가 빈 칸을 사이에 두고 주어진다. (1 ≤ n(A), n(B) ≤ 500,000)이 주어진다. 둘째 줄에는 집합 A의 원소가, 셋째 줄에는 집합 B의 원소

www.acmicpc.net

 

 

728x90

댓글