일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 4기
- c#
- TiL
- 알고리즘
- 추상클래스와인터페이스
- C
- 다익스트라
- kraftonjungle
- 네트워크
- KRAFTON JUNGLE
- 크래프톤정글
- 이벤트 함수 실행 순서
- pintos
- 티스토리챌린지
- User Stack
- BFS
- 알고리즘수업-너비우선탐색2
- 전쟁-전투
- Unity
- 핀토스
- 파이썬
- 오블완
- 유니티
- 백준
- 크래프톤 정글 4기
- 크래프톤 정글
- anonymous page
- 연결리스트
- 크래프톤정글4기
- project3
Archives
- Today
- Total
말감로그
24.08.28 알고리즘 - 파이썬 내장 함수 본문
728x90
set()
중복되지 않은 요소들의 집합을 저장한다.
순서가 없고, 중복되는 요소를 자동으로 제거한다.
주요 메서드
add(element) : 집합에 요소 추가
remove(element) : 집합에서 요소 제거. 만약 요소가 집합에 없으면 'KeyError' 발생
discard(elment) : 집합에서 요소 제거. 요소가 없어도 오류 발생X
clear() : 집합의 모든 요소 제거
union(other_set) : 두 집합의 합집합 반환
intersection(other_set) : 두 집합의 교집합 반환
difference(other_set) : 두 집합의 차집합 반환
백준 1822_차집합
import sys
input = sys.stdin.readline
n, m = map(int,input().split())
a = set(map(int,input().split()))
b = set(map(int,input().split()))
result = sorted(a.difference(b))
if result:
print(len(result))
print(*result)
else:
print(0)
간단한 문제라 쉽게 풀 것 같았지만 계속해서 시간초과가 발생했다.
리스트 a에서 리스트 b에 있는 요소들을 제거하는 작업, 'in' 연산은 O(n) 의 시간복잡도가 발생해서 시간초과가 발생한 것이었다.
그래서 set으로 변환하여 차집합을 구하면서 O(1)의 시간복잡도로 줄일 수 있었다.
728x90
'TIL' 카테고리의 다른 글
24.09.02 Unity_C# - 힙과 스택 메모리 (0) | 2024.09.02 |
---|---|
24.08.29 Unity_C# - 자료구조의 종류, 배열과 List, ArrayList, Dictionary 차이 (0) | 2024.08.29 |
24.08.27 Unity_C# - 동기 비동기(코루틴, async/await, Task.Run()) (1) | 2024.08.27 |
24.08.26 Unity_C# - delegate, event , action (2) | 2024.08.26 |
24.08.22 Unity_C# - C#와 C++의 차이, 구조체와 클래스, 박싱과 언박싱, 제네릭 (0) | 2024.08.22 |