| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- DP
- Unity
- github
- Material
- loop
- parameter
- guide
- Unreal Engine 5
- Class
- C#
- Algorithm
- 프로그래밍
- dynamic
- W3Schools
- 백준
- String
- c++
- w3school
- 파이썬
- Tutorial
- 오류
- dfs
- Programming
- python
- 기초
- 재귀
- 시작해요 언리얼 2022
- UE5
- 문제풀이
- Basic
- Today
- Total
목록Greedy Algorithm (5)
행복한 개구리
n = int(input()) dis = list(map(int, input().split())) prices = list(map(int, input().split())) result = 0 val = prices[0] for i in range(len(dis)): result += (dis[i] * val) if val > prices[i+1]: val = prices[i+1] print(result) 거리값과 기름값 리스트를 따로 만듭니다. 새롭게 방문한 도시의 기름값이 저렴할 경우, 해당 도시에서 주유를 해가는게 저렴합니다. 따라서 반복을 통해 n번째 도시까지 갈 비용을 기름값과 거리값을 토대로 계산하고 드는 기름값을 새로운 도시마다 갱신해줍니다.
m = input().split("-") num = [] for i in m: sum = 0 n = i.split("+") for j in n: sum += int(j) num.append(sum) result = num[0] for k in range(1, len(num)): result -= num[k] print(result) 우선 주어진 문제를 보면 기호는 "+"와 "-"만 사용됩니다. 수식의 처음과 끝은 숫자이므로 시작하는 수는 무조건 양수입니다. 하지만 그 이후의 수들은 괄호를 통해 모두 음수로 만들 수 있습니다. ex) 1 - 2 + 3 - 4 + 5 => 1 - (2 + 3) - (4 + 5) 따라서 "-"기호를 기준으로 받은 문자열을 나눠줍니다. 반복문을 통해 num리스트에 m의 요소들의..
n = int(input()) time = list(map(int, input().split())) time.sort() result = 0 for i in range(n): result += time[i] * (n-i) print(result) 문제의 본문을 봤을때, 시간의 합은 5P₁ + 4P₂ + 3P₃ + 2P₄ + P₅ 입니다. 따라서 가장 시간이 적게 걸리는 사람부터 시작해야합니다. 입력받은 리스트를 정렬해줍니다. 리스트를 반복문을 통해서 시간의 합을 구합니다.
n = int(input()) mp = [list(map(int, input().split())) for i in range(n)] mp.sort(key=lambda x: (x[1], x[0])) end = 0 cnt = 0 for i in range(n): if mp[i][0] >= end: cnt += 1 end = mp[i][1] print(cnt) 처음 회의를 시작하는 팀은 가장 빨리 끝나는 팀으로 지정해주어야 합니다. 이를 위해서 정렬을 해주어야하는데, 정렬을 두번 하는 이유는 종료시간으로만 정렬을 했을 때, 시작시간은 오름차순이 아닌 입력받은 순서대로 정렬되기 때문입니다. 그 이후로는 다른 팀들의 시작시간이 이전팀의 회의 종료시간과 같거나 더 늦어야합니다. 이를 통해 회의 종료시간을 갱신하며 ..