본문 바로가기

분류 전체보기

(261)
[백준] 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..
[구현] 상하좌우, 시각, 왕실의 나이트, 문자열 재정렬 python 상하좌우 n = int(input()) x,y = 1,1 dx = [-1,1,0,0] dy = [0,0,-1,1] move_types = ['U','D','L','R'] plans = input().split() for plan in plans: for i in range(len(move_types)): if plan == move_types[i]: nx = x+dx[i] ny = y+dy[i] if nxn or nyn: continue x,y = nx,ny print(x,y) 시각 문제 설명을 듣고 직접 짠 코드 n = int(input()) cnt=0 for h in range(n+1): for m in range(60): for s in range(60): if(h%10==3)or(m%10==3 o..
[그리디 알고리즘] 1이 될 때까지 python k로 나눌 수 있는 만큼 나누고 나머지는 -1을 반복해서 수행하는 방식으로 해결하면 된다. n,k = map(int,input().split()) result = 0 while True: # n보다 작거나 같은 수 중 k로 나누어떨어지는 가장 큰 수 target = (n//k)*k # -1을 수행해야 하는 횟수를 계산한 것 result += (n-target) n = target # n이 k로 나눠떨어지지 않는다면 # -1을 수행해야 하니 반복문 탈출 if n
[백준] 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)
[Python] print()의 옵션 end=""과 sep=""의 차이 end=""는 print문 마지막에 출력할 값을 설정하는 것이다. print("A","B","C","D","E","F",end=" END") # 출력 결과 # A B C D E F END​ sep=""는 print문 사이사이에 출력할 값을 설정하는 것이다. print("A","B","C","D","E","F",sep=" *** ") # 출력 결과 # A *** B *** C *** D *** E *** F​
[백준] 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()) # 학..