습/코테

[Greedy] 백준 풀긔

이준늬 2023. 3. 3. 23:47

1번) https://www.acmicpc.net/problem/1931

 

1931번: 회의실 배정

(1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다.

www.acmicpc.net

더보기
n = int(input())

meetings = []
for _ in range(n):
    meetings.append(list(map(int, input().split())))
    
meetings.sort(key = lambda x: (x[1], x[0]))

count = 0
end_time = 0

for index in range(n):
       
    if end_time <= meetings[index][0]:
        end_time = meetings[index][1]
        count += 1
    
print(count)

 

"가장" 빨리 끝나는 회의 순으로 정렬 후, 가능한 회의를 count

→ 회의가 끝나는게 빠를 수록 더 많은 회의를 감당할 수 있음

 

 

2번) https://www.acmicpc.net/problem/11399

 

11399번: ATM

첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000)

www.acmicpc.net

더보기
n = int(input())
p = list(map(int, input().split()))
p.sort()

result = 0
for i in range(n):
    result += p[i]*(n-i)
    
print(result)

 

"가장" 적은 시간이 걸린 사람이 "가장" 먼저 업무 보기

→  맨 뒷 순서는 1번만 더하면 되고, 맨 앞 순서는 인원수 만큼 더하면 되기 때문에, 걍 정렬하면 됨.

 

3번) https://www.acmicpc.net/problem/1541

 
더보기

 

s = input()
str = s.split("-")

add = 0
if str[0] != "":
    add += sum(list(map(int, str[0].split("+"))))

str.pop(0)

sub = 0
for x in str:
    sub += sum(map(int, x.split("+")))

print(add-sub)

-가 나오면 그 뒤는 -까지 더하면 댐

 

4번) https://www.acmicpc.net/problem/13305

더보기
import sys

n = int(sys.stdin.readline())
road_lengths = list(map(int, sys.stdin.readline().split()))
gas_price = list(map(int, sys.stdin.readline().split()))

total_price = 0
min_price = sys.maxsize

for _ in range(n-1):
    total_price += road_lengths[0] * min(gas_price[0], min_price)
    min_price = min(gas_price[0], min_price)
    
    road_lengths.pop(0)
    gas_price.pop(0)

print(total_price)

"가장" 작은 처음 시작부터 갱신해가면 최소 기름값으로 갈 수 있음.

 

' > 코테' 카테고리의 다른 글

[2023.03.13] 6 주차  (0) 2023.03.13
[구현] 이코 실전문제  (0) 2023.03.03
[Greedy] 이코 기출문제  (0) 2023.03.03
[Greedy] 이코 실전문제  (0) 2023.03.03