본문 바로가기
알고리즘/백준 solved.ac PS

[백준][solved.ac][Silver 4][Python] 1822번 : 차집합

by 빛밤하늘 2021. 6. 2.
반응형

밑의 링크는 백준에서의 문제 링크입니다.

 

1822번: 차집합

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

www.acmicpc.net

 

 

 

 

 

 

 

 

파이썬 코드와 결과입니다.

# readline을 사용하기 위해 import합니다.
from sys import stdin

# 첫째 줄에 집합 A의 원소의 개수 n(A), 집합 B의 원소의 개수 n(B)를 빈 칸을 사이에 두고 입력합니다.
# 1 <= n(A), n(B) <= 500,000
# 각각 정수형으로 변환합니다.
nA, nB = map(int, stdin.readline().split(' '))
# 둘째 줄에는 집합 A의 원소를 빈 칸을 사이에 두고 입력합니다.
# 각각 정수형으로 변환하고 set 변수에 넣어줍니다.
A = set(map(int, stdin.readline().split(' ')))
# 셋째 줄에는 집합 B의 원소를 빈 칸을 사이에 두고 입력합니다.
# 각각 정수형으로 변환하고 set 변수에 넣어줍니다.
# 집합의 원소는 2,147,473,647 이하의 자연수입니다.
# 한 집합의 모든 원소의 값은 다릅니다.
B = set(map(int, stdin.readline().split(' ')))
# 집합 A에는 속하면서 집합 B에는 속하지 않는 set를 만듭니다.
# 리스트 변수로 만들고 오름차순 정렬을 해줍니다.
A_diff_B = sorted(list(A.difference(B)))

# A_diff_B 원소의 개수를 출력합니다.
print(len(A_diff_B))
# A_diff_B 원소의 개수가 0이 아니라면
if len(A_diff_B) != 0:
    # 출력 형식에 맞게 원소를 하나씩 출력합니다.
    for element in A_diff_B:
        print(element, end=' ')

결과

 

첫 번째 제출했을 때는 원소의 개수가 0인 경우를 코드에 넣지 않아서 런타임 에러(NameError)가 떴습니다.

문제를 자세히 읽지 않은 것을 반성하게 됩니다...

 

 

 

※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.

※ 더 효율적이고 빠른 정답을 환영합니다.

반응형

댓글