[python_파이썬_pass]백준_1269번_대칭 차집합_풀이

2024. 5. 11. 22:09코드리뷰

728x90
반응형

공부하는허딩크 : https://www.youtube.com/live/S9Tn1JM6-yc?feature=shared

 

함수만 알면 정말 깔끔하게 해결 할 수 있다.

 

<첫번째 시도 : 맞았습니다.>

직전 문제에서 해당 함수를 봤기 때문에 해결할 수 있었다.

집합 함수 관련 정리 : https://heodinkcodingdiary.tistory.com/53

 

[python_파이썬_pass_집합 관련 함수 설명]백준_1764번_듣보잡_풀이

공부하는허딩크 : https://www.youtube.com/live/S9Tn1JM6-yc?feature=shared 2개의 입력값을 비교해서 2번 나오면 사전순으로 출력하는 문제이다.처음에 기존 방식처럼 N과 M의 입력값들을 list로 구분하려고 방

heodinkcodingdiary.tistory.com

import sys
input = sys.stdin.readline

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

print(len(A_set.symmetric_difference(B_set)))

 

<두번째 시도 : 맞았습니다.>

symmetric.difference는 코테에서는 사용 못할 것 같아서 difference로 사용해봤다.

import sys
input = sys.stdin.readline

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

answer = len(A_set.difference(B_set)) + len(B_set.difference(A_set))

print(answer)

 

<세번째 시도 : 맞았습니다.>

집합 연산을 사용하지 않고 생성만해서 코드를 작성해 봤다.

import sys
input = sys.stdin.readline

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

for i in A_set:
    if i not in B_set:
        C_set.add(i)
for i in B_set:
    if i not in A_set:
        C_set.add(i)

print(len(C_set))

 

<네번째 시도 : 시간초과>

set을 사용하지 않으니 바로 시간초과 걸리네.

chatgpt에 문의시 list를 사용한 코드의 시간 복잡도는 O(N^2) : 각 집합에서 요소를 하나씩 순회하며 다른 집합에 있는지 확인하기 때문이다. (선형시간이 소요)

set을 사용한 코드의 시간복잡도는 O(N)으로 상수 시간이 소요됨

import sys
input = sys.stdin.readline

A, B = map(int, input().split())
A_set = list(map(int, input().split()))
B_set = list(map(int, input().split()))
C_set = []

for i in A_set:
    if i not in B_set:
        C_set.append(i)
for i in B_set:
    if i not in A_set:
        C_set.append(i)

print(len(C_set))

 

 

<다른사람풀이 참고>

거의 비슷해서 참고할게 없음.

 

728x90
반응형