2024/07/20 3

[Python] 9237번 이장님 초대

✏️ 문제 문제 파악일단 첫 날을 1일로 계산하고 이장님을 다 자라고 다음날에 부르므로 각각 +1 씩 해준다. 그 후 다 심을 때까지의 날짜가 필요하므로 n개를 다 심으면 (n-1)일 후이므로 날짜에 (n-1)을 더해준다.그 후 내림차순 정렬하여 맨 앞에 있는 배열 요소가 0이 될 때까지 날짜가 필요하므로 배열[0]을 더해준다. 이때 처음 배열에 (n-1)일 후의 남은 날짜를 넣으려고 할 때 for 반복문을 2개 사용하면 시간 초과가 생기므로 이를 넣기 쉽게 하기 위해서 내림차순 정렬을 해주었다. 알고리즘그리디 알고리즘정렬  코드import sysinput = sys.stdin.readlinen = int(input())tree = list(map(int, input().split()))day = 1tr..

PS/백준 2024.07.20

[Python] 1758번 알바생 강호

✏️ 문제 문제 파악꾸러미 중에 제일 작은 가격이 공짜이므로 큰 금액을 공짜로 받으면 이득이므로 꾸러미에 제일 작은 가격과 그 가격과 별로 차이 나지 않는 가격들끼리 묶어놓는 게 좋다. 그래서 정렬을 사용한 후 3의 배수 번째의 위치에 있는 가격들이 공짜이므로 그 가격들 제외하고 더하는 방식으로 풀었다. 알고리즘그리디 알고리즘정렬  코드n = int(input())line = []tip = 0for i in range(n): line.append(int(input()))line.sort(reverse=True)for i in range(n): if line[i]-(i+1-1) > 0: tip += line[i]-(i+1-1)print(tip)

PS/백준 2024.07.20

[Python] 11508번 2+1 세일

✏️ 문제 문제 파악꾸러미 중에 제일 작은 가격이 공짜이므로 큰 금액을 공짜로 받으면 이득이므로 꾸러미에 제일 작은 가격과 그 가격과 별로 차이 나지 않는 가격들끼리 묶어놓는 게 좋다. 그래서 정렬을 사용한 후 3의 배수 번째의 위치에 있는 가격들이 공짜이므로 그 가격들 제외하고 더하는 방식으로 풀었다. 알고리즘그리디 알고리즘정렬  코드n = int(input())price = 0milk = []for i in range(n): milk.append(int(input()))milk.sort(reverse=True)for i in range(0, n): if (i+1) % 3 != 0: # 3번째의 위치빼고 다 가격을 지불 price += milk[i]print(price)

PS/백준 2024.07.20