알고리즘 문제 풀이: 파이썬/BOJ

[BOJ_11723] 집합

hueco 2021. 11. 2.

문제 링크: https://www.acmicpc.net/problem/11723

 

11723번: 집합

첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다.

www.acmicpc.net

내 풀이:

Review:

 remove 명령은 집합 s에 num이 존재하면 제거하고, 없으면 무시하는 명령이다. 이 명령을 처리하기 위해 remove()가 아닌 discard()를 사용했다.

두 내장함수 모두 집합에서 원소를 제거하지만, remove()의 경우에는 집합에 해당하는 원소가 없으면 KeyError가 발생하고, discard()의 경우는 해당 원소가 없어도 에러가 발생하지 않는다. 따라서 해당 원소가 존재하는지 정확히 알 수 없을때는 discard()를 사용하고 반대의 경우는 remove()를 사용하는 것이 좋다. 위의 toggle 명령을 처리할 때 in 연산자로 num이 집합 s에 존재하는지 확인한 경우에는 discard()가 아닌 remove()를 이용해서 해당 원소를 제거하는 처리를 해주었다.

 all 명령의 처리를 위해 미리 집합 컴프리헨션을 이용하여 1~20까지의 원소를 가진 집합을 미리 선언하였다.

 

Idea:

 문제에서 요구하는 요구사항을 집합이나 리스트를 이용해서 구현하면 어렵지 않은 문제이다.

'알고리즘 문제 풀이: 파이썬 > BOJ' 카테고리의 다른 글

[BOJ_9046] 복호화  (0) 2022.01.01
[BOJ_6996] 애너그램  (0) 2021.11.04
[BOJ_8892] 팰린드롬  (0) 2021.10.27
[BOJ_1236] 성 지키기  (0) 2021.10.24
[BOJ_4358] 생태학  (0) 2021.10.23

댓글