본문 바로가기

[BOJ] - Python

(45)
[백준] 11047 : 동전 0 python 이러한 조건이 붙어있기 때문에 이 문제는 그리디 알고리즘으로 해결할 수 있다. 큰 동전이 작은 동전들의 배수이기 때문에 큰 동전부터 사용해서 금액을 채워나가다보면 동전의 개수가 최소가 되기 때문이다. 1. N과 K를 입력받는다. 2. N줄에 걸쳐 입력되는 동전의 가치를 coins list에 저장한다. 3. coins 배열을 내림차순으로 정렬한다. 4. 동전의 개수를 저장할 변수 cnt를 0으로 초기화한다. 5. coins에 저장된 동전 중 값이 큰 것부터 금액 K를 맞춰간다. 5-1. K가 각 동전(coin)보다 크다면 K를 coin으로 나눈 몫만큼 cnt를 증가시킨다. 5-2. K를 coin으로 나눈 나머지로 K를 업데이트한다. n,k=map(int,input().split()) coins = [] c..
[백준] 1991 : 트리 순회 python 이코테의 트리 순회 강좌를 보고 짠 코드 import sys input = sys.stdin.readline class Node: def __init__(self, data, left, right): self.data=data self.left=left self.right=right def pre_order(node): print(node.data, end='') if node.left!=None: pre_order(tree[node.left]) if node.right!=None: pre_order(tree[node.right]) def in_order(node): if node.left!=None: in_order(tree[node.left]) print(node.data,end='') if node..
[백준] 11279 : 최대 힙 python import sys import heapq input = sys.stdin.readline h = [] n = int(input()) for i in range(n): x = int(input()) if x==0: if not h: print(0) else: print(heapq.heappop(h)[1]) else: heapq.heappush(h,(-x,x)) heapq.heappush(heap, (-item,item)) 튜플형식으로 음수값과 함께 원래 값을 힙에 추가하면 튜플의 첫 번째 원소인 -item으로 최소 힙 정렬을 수행하기 때문에 최대 힙 정렬을 수행한 것과 같은 효과가 일어난다. heapq.heappop(heap)[1] pop할 때에는 튜플의 두 번째 값을 꺼내오면 된다.
[백준] 1927 : 최소 힙 python import sys import heapq input = sys.stdin.readline n = int(input()) h = [] for i in range(n): x = int(input()) if x==0: # 리스트가 비어있으면 if not 조건이 True가 됨 if not h: print(0) else: print(heapq.heappop(h)) else: heapq.heappush(h,x)
[백준] 11557 : Yangjojang of The Year python t = int(input()) for i in range(t): n = int(input()) school = [] drink = [] for j in range(n): line = input() split = line.split(' ') school.append(split[0]) drink.append(int(split[1])) idx = drink.index(max(drink)) print(school[idx]) 내가 직접 푼 코드인데 암만봐도 비효율적인 것 같아 다른 사람들의 풀이를 참고해보았다 # 테스트케이스 개수 T = int(input()) # 최대 술값 max = 0 # 학교이름 name = "" for i in range(T): # 학교의 개수 입력받음 N = int(input()) # 학..