본문 바로가기
알고리즘/백준알고리즘

백준 2455번 - 지능형 기차 C++

by 안알랴줌. 2019. 8. 3.

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

 

2455번: 지능형 기차

최근에 개발된 지능형 기차가 1번역(출발역)부터 4번역(종착역)까지 4개의 정차역이 있는 노선에서 운행되고 있다. 이 기차에는 타거나 내리는 사람 수를 자동으로 인식할 수 있는 장치가 있다. 이 장치를 이용하여 출발역에서 종착역까지 가는 도중 기차 안에 사람이 가장 많을 때의 사람 수를 계산하려고 한다. 단, 이 기차를 이용하는 사람들은 질서 의식이 투철하여, 역에서 기차에 탈 때, 내릴 사람이 모두 내린 후에 기차에 탄다고 가정한다.   내린 사람 수

www.acmicpc.net

4개의 역이 있고 이때 1번역은 내린사람이 당연히 0 이고, 마지막 4번째 역은 종착역으로 당연히 타는사람이 없다고 가정한다.

일단 4개의 기차역 배열을 만든다. 배열안에는 사람들이 타고 내린후 에 최종적으로 남은 사람들의 수가 저장될것이다.

타는 사람과 내리는 사람의 변수를 만들고 합산하는 변수또한 생성한다. (a, b, tot 라고 정의하였음)

기차역이 4개이므로 반복문으로 내린사람과 타는사람을 입력받는다.

그후 전체에서 내린사람은 빼주고 타는사람은 더해주는 식으로 값을 구해주면된다.

 

이때 문제인 기차안에 사람이 가장많을 때는 STL의 sort 함수를 사용하면 된다.

아래는 내림차순으로 하였는데, 오름차순으로 할경우 arr[4] 를 출력하면 된다.

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <functional>
#include <vector>
#include <stack>
#include <queue>

using namespace std;

int arr[4];

int main(void)
{
    int a, b;
    int tot=0;
    for(int i=0; i<4; ++i) {
        cin >> a >> b;
        tot = tot + b -a;
        arr[i] = tot;
    }
    sort(arr, arr+ 4, greater<int>());
    cout << arr[0];
    return 0;
}

'알고리즘 > 백준알고리즘' 카테고리의 다른 글

백준 3184번 - 양 c++  (0) 2019.08.23
백준 2667번 - 단지번호붙이기 c++  (0) 2019.08.08
백준 1260번 - DFS 와 BFS C++  (0) 2019.08.04
백준 15953번 - 상금 헌터 C++  (0) 2019.08.02

댓글