[백준 1758번] 알바생 강호

2023. 4. 19. 20:50·알고리즘 문제풀이/백준
반응형

문제 링크: https://www.acmicpc.net/problem/1758

 

1758번: 알바생 강호

첫째 줄에 스타박스 앞에 서 있는 사람의 수 N이 주어진다. N은 100,000보다 작거나 같은 자연수이다. 둘째 줄부터 총 N개의 줄에 각 사람이 주려고 하는 팁이 주어진다. 팁은 100,000보다 작거나 같

www.acmicpc.net

<문제 풀이> 그리디, 정렬 알고리즘

 

팁 - (받은 등수 - 1)

 

위 식을 계산했을 때 0보다 작은 경우는 팁을 누적하지 않습니다.

전체 팁의 합을 최댓값으로 만드는 최적의 해는 사람을 배치할 때 팁을 적게 주는 사람을 최대한 뒤로 보내는 것입니다.

 

예를 들어

50원을 주는 사람이 1등이고, 10원을 주는 사람이 100등이라고 할 때 팁은 다음과 같이 계산됩니다.

 

50 - (1 - 1) = 50
10 -(100 -1 ) = 0

총 팁 : 50

 

50원을 주는 사람을 100등, 10원을 주는 사람을 1등이라고 할 때 팁은 다음과 같이 계산됩니다.

50 - (100 - 1) == 0

10 - (1 - 1) = 10

총 팁: 10

 

위 예시를 보면 뒤에 오는 사람은 식의 값이 0보다 작게 되어서 팁을 누적하지 않습니다.

둘 중에 한 명의 팁을 누적하지 않을 거라면 최대한 팁을 적게 주는 사람을 뒤로 보내 누적하지 않는 것이 최적의 해가 되는 것을 알 수 있습니다.

 

따라서 팁을 기준으로 내림차순 정렬한 뒤 식의 값을 누적하면 됩니다.

 

<C++소스코드>

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
#include<iostream>
#include<algorithm>
#include<functional>
using namespace std;
 
typedef long long ll;
 
int seq[100001];
 
int main() {
    ios_base::sync_with_stdio(false);
 
    int n;
    cin >> n;
    for (int i = 0; i < n; i++) {
        cin >> seq[i];
    }
    sort(seq, seq + n, greater<int>());
    ll ans = 0;
    for (int i = 0; i < n; i++) {
        int m = seq[i] - i;
        if (m < 0) continue;
        ans += m;
    }
    cout << ans;
    return 0;
}
Colored by Color Scripter
cs
 

 

반응형
저작자표시 (새창열림)

'알고리즘 문제풀이 > 백준' 카테고리의 다른 글

[백준 11508번] 2 + 1 세일  (0) 2023.04.20
[백준 1890번] 점프  (0) 2023.04.19
[백준 13305번] 주유소  (0) 2023.04.19
[백준 11055번] 가장 큰 증가하는 부분 수열  (0) 2023.04.18
[백준 14916번] 거스름돈  (0) 2023.04.12
'알고리즘 문제풀이/백준' 카테고리의 다른 글
  • [백준 11508번] 2 + 1 세일
  • [백준 1890번] 점프
  • [백준 13305번] 주유소
  • [백준 11055번] 가장 큰 증가하는 부분 수열
슥지니
슥지니
개발 블로그
  • 슥지니
    슥지니의 코딩노트
    슥지니
  • 전체
    오늘
    어제
    • 분류 전체보기 (198)
      • 알고리즘 문제풀이 (158)
        • 백준 (158)
      • 알고리즘 (6)
      • Node.js (2)
        • MongoDB (1)
        • 기타 (1)
      • spring (0)
      • 가상화폐 (1)
        • 바이낸스(Binance) (1)
      • C++ 테트리스 게임 (0)
      • C++ (10)
      • 안드로이드 프로그래밍 (21)
        • 코틀린 (21)
  • 블로그 메뉴

    • 홈
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    우선순위 큐
    그래프
    백트랙킹
    C
    다이나믹 프로그래밍
    구현
    Kotlin
    그리디
    dp
    BFS
    코틀린을 활용한 안드로이드 프로그래밍
    코틀린
    C++
    dfs
    알고리즘
    자료구조
    백준
    콘솔
    시뮬레이션
    콘솔 테트리스 게임
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
슥지니
[백준 1758번] 알바생 강호
상단으로

티스토리툴바