본문 바로가기

Algorithm89

[백준] 1202번 보석 도둑 후.. 우선순위큐를 쓰지 않으면 시초가 오지게 뜬다.. 시초 안뜨게 하려면 우순큐로 풀어야됨 우순큐 시간복잡도 개꿀.. import sys import heapq def greedy(jewel, bagData): ans = 0 pickedJewel = [] for _ in range(K): bagSize = heapq.heappop(bagData) while jewel and bagSize >= jewel[0][0]: w, v = heapq.heappop(jewel) heapq.heappush(pickedJewel, -v) if pickedJewel: ans -= heapq.heappop(pickedJewel) elif not jewel: break return ans N, K = map(int, sys.. 2020. 10. 20.
[백준] 11509번 풍선 맞추기 한 화살이 다 관통해버린다는 줄 알고... 리스트에 방문 미방문 표시로 풀었었다... 그러면 안됨.. arr 리스트에 화살 갯수를 저장하는 방식으로 해줘야 풀 수 있음 import sys def greedy(H, N): LIMIT = 1000001 count = 0 arr = [0] * LIMIT for i in range(N): tempVal = H[i] if arr[tempVal + 1] == 0: count += 1 else: arr[tempVal + 1] -= 1 arr[tempVal] += 1 return count N = int(sys.stdin.readline()) H = list(map(int, sys.stdin.readline().split())) print(greedy(H, N)) 2020. 10. 19.
[백준] 10773번 제로 import sys N = int(sys.stdin.readline()) ans = [] for i in range(N): temp = int(sys.stdin.readline()) if temp == 0: ans.pop() else: ans.append(temp) print(sum(ans)) 2020. 10. 16.
[백준] 1475번 방번호 더 쉽게하는 방법이 있을꺼 같다.. N = input() arr = [0] * 10 ans = 0 t1, t2 = divmod(N.count('6') + N.count('9'), 2) N =N.replace('6', '') N =N.replace('9', '') ans = t1 + t2 for i in range(len(N)): arr[int(N[i])] += 1 if ans > max(arr): print(ans) else: print(max(arr)) 2020. 10. 16.