백준 단계별로 풀어보기(집합과 맵) 파트에서 계속 시간초과가 발생했다.
해결방법으로는 두가지 정도로 요약할 수 있는데, 첫번째로는 리스트 대신 딕셔너리 사용, 두번째로는 개수를 세는 문제에서 for문을 돌면서 세지 말고 파이썬 함수 Counter를 사용하는 것이다. 이 두가지에 대해서 정리를 해보고자 한다.
딕셔너리
diction_name = {}
diction_name[key_name] = value_name
- 딕셔너리를 { }를 통해 하나 만든다.
- 리스트와 달리 값을 추가할 때 list_name.append(value)가 아니라 key를 찾아서 value를 지정해주는 형식
Counter
from collections import Counter
c = Counter(nm_name)
- key 값으로는 이름, value 값으로는 각각의 개수가 만들어진다.
순열과 조합
from itertools import combinations, permutations
nums = [1,2,3,4]
# 순열
perm = list(permutations(nums, 2))
# 조합
combi = list(combinations(nums, 2))
'Python > 자료구조, 알고리즘' 카테고리의 다른 글
에라토스테네스의 체 (0) | 2023.05.02 |
---|---|
[파이썬] 약수, 배수, 소수 (0) | 2023.04.03 |
재귀함수 (1) | 2023.02.03 |