[python_파이썬_pass]백준_1269번_대칭 차집합_풀이
2024. 5. 11. 22:09ㆍ코드리뷰
728x90
반응형
공부하는허딩크 : https://www.youtube.com/live/S9Tn1JM6-yc?feature=shared
함수만 알면 정말 깔끔하게 해결 할 수 있다.
<첫번째 시도 : 맞았습니다.>
직전 문제에서 해당 함수를 봤기 때문에 해결할 수 있었다.
집합 함수 관련 정리 : https://heodinkcodingdiary.tistory.com/53
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
반응형
'코드리뷰' 카테고리의 다른 글
[python_파이썬_공배수 시간복잡도_유클리드호제법]백준_1934번_최소공배수_풀이 (0) | 2024.05.12 |
---|---|
[python_파이썬]백준_11478번_서로 다른 부분 문자열의 개수_풀이 (0) | 2024.05.11 |
[python_파이썬_pass_집합 관련 함수 설명]백준_1764번_듣보잡_풀이 (0) | 2024.05.11 |
[python_파이썬_pass]백준_10816번_숫자 카드2_풀이 (0) | 2024.05.11 |
[python_파이썬]백준_1620번_나는야 포켓몬 마스터 이다솜_풀이 (0) | 2024.05.11 |