Algorithm/Java
[백준/JAVA] 1758번: 알바생 강호
dbfl9911
2024. 7. 16. 16:25
반응형
https://www.acmicpc.net/problem/1758
- 정답 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Collections;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine()); // 손님 수
Integer[] list = new Integer[N]; // 각 손님이 주려고 생각한 팁 저장 배열
for(int i = 0; i < N; i++) {
list[i] = Integer.parseInt(br.readLine());
}
// 팁 내림차순 정렬
Arrays.sort(list, Collections.reverseOrder());
long maxTip = 0;
// 각 손님의 순서 계산해 팁 최대화
for(int i = 0; i < N; i++) {
// i번째 손님 팁 계산
// 손님이 주려고 했던 팁 - (받은 순서 - 1)
int tip = list[i] - i;
// 계산된 팁이 음수가 아니면 최대 팁에 추가
if(tip > 0) {
maxTip += tip;
}
}
System.out.println(maxTip);
}
}
- 코드 설명
1. 각 손님의 팁을 계산
int tip = list[i] - i;
- list[i]는 현재 손님이 주려고 했던 원래의 팁입니다.
- i는 현재 손님의 순서(0부터 시작)입니다.
- 실제로 강호가 받을 수 있는 팁은 list[i] - i로 계산됩니다. 이는 손님이 주려고 했던 팁에서 손님의 순서에 따른 팁 감소를 적용한 값입니다.
2. 팁이 음수가 아닌 경우 최대 팁에 추가
if(tip > 0) {
maxTip += tip;
}
tip이 0보다 큰 경우에만 maxTip에 더합니다. 팁이 음수인 경우에는 강호가 팁을 받지 않기 때문에 무시합니다.
반응형