문제풀이/백준(Boj) 문제풀이 188

[백준][그리디 알고리즘] 13305. 주유소 (파이썬/Python)

import sys input = sys.stdin.readline n = int(input()) road = list(map(int,input().split())) #도로 길이 price = list(map(int,input().split())) # 리터당 기름 가격 res = road[0]*price[0] #첫번째는 무조건 기름을 채우고 출발해야 하기 때문 m = price[0] dist = 0 for i in range(1,n-1): if price[i] < m: #두 번째 가격이 첫 번째보다 작을 때 res += m * dist dist = road[i] m = price[i] else: dist += road[i] if i == n-2: res += m*dist print(res)

[백준][그리디 알고리즘] 1541. 잃어버린 괄호 (파이썬/Python)

import sys input = sys.stdin.readline a = input().split('-') num = [] for i in a: cnt = 0 s = i.split('+') #1 for j in s: cnt += int(j) num.append(cnt) n = num[0] for i in range(1, len(num)): n -= num[i] print(n) # 최소값을 만드는 방법은 -를 기준으로 괄호를 쳐준다 #1 +를 기준으로 계속 더해준다. # 다 더해준 뒤 -를 기준으로 빼주면 최소값이 나옴.

[백준][그리디 알고리즘] 1931. 회의실 배정 (파이썬/Python)

import sys input = sys.stdin.readline n = int(input()) time = [[0]*2 for _ in range(n)] for i in range(n): start, end = map(int,input().split()) time[i][0] = start time[i][1] = end #끝나는 시간을 먼저 정렬한 뒤 시작시간 정렬 time = sorted(time, key=lambda a: (a[1],a[0])) end_time = time[0][1] cnt = 1 #시작 시간이 회의의 마지막 시간보다 크거나 같을 경우 for i in range(1, n): if time[i][0] >= end_time: cnt+=1 end_time = time[i][1] print..

[백준][그리디 알고리즘] 11047. 동전 0 (파이썬/Python)

import sys input = sys.stdin.readline n, k = map(int,input().split()) coin = [] result = 0 for _ in range(n): coin.append(int(input())) coin.sort(reverse = True) for i in coin: if k == 0: break #coin에 담겨있는 돈(k에서 나눌 돈)이 k보다 큰 경운 컨티뉴 if i>k: continue result += k//i k %= i print(result) # 거꾸로 반복문 구성하는 것보다 차라리 아예 역순으로 큰 돈부터 차례대로 비교할 수 있게 정렬해버려서 진행 n,k = map(int,input().split()) coins = [] answer = 0..

[백준][동적 계획법1] 11054. 가장 긴 바이토닉 부분 수열 (파이썬/Python)

import sys input = sys.stdin.readline n = int(input()) lst = list(map(int,input().split())) r_lst = lst[::-1] #감소하는 부분 수열을 구하기 위함 뒤집어 저장 increase = [1 for i in range(n)] decrease = [1 for i in range(n)] for i in range(n): for j in range(i): if lst[i] > lst[j]: increase[i] = max(increase[i],increase[j]+1) if r_lst[i] > r_lst[j]: decrease[i] = max(decrease[i],decrease[j]+1) result = [0 for i in ra..