[백준/C++/Greedy] 11399 ATM

2024. 8. 19. 16:33·[ Computer Science ]/Algorithm_C++

0. 문제

ATM / 실4 / 11399 / greedy

https://www.acmicpc.net/problem/11399

ATM 기기가 한 대 밖에 없는 상황이라

인출 시간이 각각 다른 유저들이 대기하고 있을 때 

모든 유저의 대기 시간 누적 합이 최소가 되도록 

ATM 기기 사용 순서를 정해야하는 문제이다

 

ATM 유저의 대기 시간의 총 누적합이 최소가 되려면

인출 시간이 적게 걸리는 유저부터 사용해야

최소가 될 수 있을 것이다

 

그런데 인풋 조건은 정렬 상태가 아닌 랜덤이므로

내가 정렬시켜야 한다

 

 

 

1. 테스트 케이스 분석

인풋 첫 줄에는 유저의 수가 주어지고

그 다음 줄에는 각 유저의 인출 시간이 주어진다

 

각 유저의 인출 시간 기준으로 오름차순 정렬한 후 

특정 유저 차례가 되면 

해당 유저부터 이후 순서의 모든 유저 대기시간에는

해당 유저의 인출 시간이 포함되도록 계산해야한다

 

각 유저의 대기 시간을 모두 더해서

모든 유저의 대기 시간 누적 합을 출력하면 된다

 

2. 코드 구상

제시된 인풋 값을 저장한 후 

다시 sort 함수로 오름차순 정렬을 하고 

루프를 돌며 해당 차례 유저의 인출 시간을 

해당 유저의 대기 시간부터 이후 순서의 유저들의 대기 시간에 모두 더해준다

 

각 유저들의 대기 시간의 합을 모두 더해

모든 유저 대기 시간 누적 합을 구하고 출력한다

 

3. 코드

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
    int n;  // 사람 수
    cin >> n;

    vector<int> withdraw(n);  // 각자 인출에 드는 시간 저장

    // 인출 시간
    for (int i = 0; i < n; i++) {
        cin >> withdraw[i];
    }

    // 오름차순 정렬
    sort(withdraw.begin(), withdraw.end());

    int total = 0;  // 모든 사람 소요 시간
    int wait = 0;   // 현재 사람까지의 대기 시간

    // 순서대로 계산
    for (int i = 0; i < n; i++) {
        wait += withdraw[i];  // 현재 사람 대기 시간
        total += wait;        // 모든 사람 대기 시간 합산
    }

    cout << total << endl;  // 모든 사람 대기 시간 합산
    return 0;
}

 

 

728x90

'[ Computer Science ] > Algorithm_C++' 카테고리의 다른 글

[백준/C++/Greedy] 13305 주유소  (1) 2024.08.19
[백준/C++/Greedy] 11047 동전 0  (0) 2024.08.19
[백준/C++/Graph] 16928 뱀과 사다리 게임  (0) 2024.07.28
[백준/C++/DP] 1463 1로 만들기  (0) 2024.06.28
[프로그래머스/C++] 주사위 게임 3  (0) 2024.02.04
[프로그래머스/C++] 연속된 수의 합  (0) 2024.02.04
[프로그래머스/C++] 최빈값 구하기  (0) 2024.02.04
'[ Computer Science ]/Algorithm_C++' 카테고리의 다른 글
  • [백준/C++/Greedy] 13305 주유소
  • [백준/C++/Greedy] 11047 동전 0
  • [백준/C++/Graph] 16928 뱀과 사다리 게임
  • [백준/C++/DP] 1463 1로 만들기
dev charlotte
dev charlotte
주 - 컴퓨터공학 / 복수 - 산업 보안
    250x250
  • dev charlotte
    int main() {
    dev charlotte
  • 전체
    오늘
    어제
    • 분류 전체보기
      • [ Laboratory ]
        • Paper review
        • Advanced Operating System
        • System Software & Storage
        • Lab etc
      • [ Computer Science ]
        • Algorithm_C++
        • Operating System
        • Information Retrieval
        • Database_sql
        • SW Engineering
        • Computer Network
        • JavaScript
        • Python
        • Data Structure
        • CS study
        • Distributed systems
      • [ Computer Security ]
        • Convergence Security
        • Web Security
        • PIMS
        • Network Security
        • Digital Finance
      • [ Artificial Intelligence ]
        • Trend
        • Seminar
      • [ 미래, 같이, LG ]
      • [ Development ]
        • [ Front-end ]
        • [ Back-end ] Spring 기본
        • [ Back-end ] Node.js
      • etc
        • 현대오토에버 스마트 모빌리티 공학 체험 교육
      • It's me
  • 블로그 메뉴

    • 링크

      • GitHub
    • 공지사항

    • 인기 글

    • 태그

      스마트모빌리티공학체험교육
      MySQL
      백준
      코드잇
      비전공자 코딩
      싸피
      현대오토에버
      프로그래머스
      대학생 대외활동
      hotstorage
      SQL 쿼리
      프로그래머스 코테
      프로그래밍 언어론
      데이터베이스
      코딩 인강
      싸피 13기
      코딩 교육
      자바스크립트
      프로그래머스 입문
      SSAFY
      SQL
      공대생 대외활동
      소프트웨어 공학
      ssafy 13기
      오블완
      현대오토에버 스마트모빌리티
      spdk
      현대오토에버 스마트 모빌리티
      티스토리챌린지
      프로그래머스 c++
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.4
    dev charlotte
    [백준/C++/Greedy] 11399 ATM
    상단으로

    티스토리툴바