[백준] 9237 : 이장님 초대 - Python

Chooooo·2022년 9월 24일
0

알고리즘/백준

목록 보기
9/182


그리디 알고리즘문제

문제 해결
해당 문제는 이장님을 최대한 빨리 초대하기 위해 나무가 다 자라는데 걸리는 일 수가 높은 순서대로 나무를 심도록 내림차순 정렬,
묘목 하나를 심는데 걸리는 시간은 1일이기 때문에 인덱스, 값을 따로 더하면 해당 나무를 심고 다 자라는데 걸리는 시간들을 알 수 있다.
(insert(0,0)을 통해 0번 인덱스는 사용하지 않도록 함)
idx + value를 해당 나무를 심고 다 자라는데 걸리는 시간. 이 값의 최댓값이 모든 나무가 다 심고 끝나는 일 수. 그 다음 날에 이장님을 초대할 수 있으므로
최댓값에 1을 더해 출력하면 된다.

생각
인덱스과 값을 같이 생각하면 바로 풀 수 있었다. enumerate와 친해지자.

소스코드

import sys

sys.stdin = open("input.text", "rt")

N = int(input())
data = list(map(int, input().split()))  #각 나무가 자라는데 걸리는 일

#각 묘목은 심는데 1일, 다 자라는데 걸리는건 개별
#나무를 심는 순서 정해서 최소날짜로 모두 자라게, 이장은 다음날에 초대
data.sort(reverse= True)  #내림차순
data.insert(0, 0) #1번 인덱스부터 사용.

max_date = 0
for idx, value in enumerate(data):
    if max_date < idx + value:
        max_date = idx + value

print(max_date + 1)   #나무가 다 자란 다음날 이장님 초대

다른 코드

n = int(input())
data = list(map(int, input().split()))

data.sort(reverse=True)

for i in range(n) :
  data[i] = data[i] + i + 1

print(max(data) + 1)

각 심는데 걸리는 시간에 i+1을 다시 더해서 총 걸린 시간을 data리스트에 다시 저장.

profile
back-end, 지속 성장 가능한 개발자를 향하여

0개의 댓글