문제 출처: https://www.acmicpc.net/problem/22252
1. 문제 접근 방식
name을 보고 해시를 사용하겠다고 생각했고, 루프를 돌면서 name이 존재한다면 heappush를 해주고
name이 없다면 추가를 해줬다.
2. 내가 푼 코드
import sys
import heapq
case = int(sys.stdin.readline())
hash = {}
sum = 0
def minus(x):
return -1*x
for _ in range(case):
gor_list = sys.stdin.readline().split()
if int(gor_list[0]) == 1:
name = gor_list[1]
value = list(map(int, gor_list[3:]))
target = list(map(minus,value))
if name in hash:
for i in target:
heapq.heappush(hash[name],i)
else:
hash[name]=target
else:
name = gor_list[1]
num = int(gor_list[2])
if name in hash:
for i in range(min(num,len(hash[name]))):
a = heapq.heappop(hash[name])
sum+=abs(a)
print(sum)
3. 결과 및 느낀점
푸는데 상당히 시간이 오래걸렸다.
해시 문제는 딕셔너리를 사용해야 시간복잡도 측면에서 효율적일 것 같다.
이번에 풀면서 딕셔너리의 메소드랑 map함수에 대해서 공부를 했는데 정리를 해두자.
또, 처음에 입력 받는 부분을 어떻게 처리할지 고민했는데
다 한번에 split으로 받고 인덱스로 접근해서 변수를 만드는 것이 괜찮앗다.
복습을 잘해야 하는 문제일 것 같다
'[Boj문제풀이]' 카테고리의 다른 글
[Boj/백준] 2644 Python (0) | 2021.09.20 |
---|---|
[Boj/백준] 21773 Python (0) | 2021.09.18 |
[Boj/백준] 13975 Python (0) | 2021.09.16 |
[Boj/백준] 19598 Python (0) | 2021.09.15 |
[Boj/백준] 19638 Python (0) | 2021.09.14 |