본문 바로가기

Algorithm/Implementation

(C++) - 백준(BOJ) 15080 : Every Second Counts

반응형

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

 

15080번: Every Second Counts

Meredith runs a taxi service called Ruber which offers rides to clients in small towns in western Pennsylvania. She wants to get every possible dime out of people who use her taxis, so her drivers charge a flat fee not per minute but per second. It’s imp

www.acmicpc.net

단순 시간계산 문제였습니다.

 

📕 풀이방법

📔 입력 및 초기화

 입력 format이 똑같기 때문에 int형 배열에 scanf함수를 이용해 입력받을 수 있습니다.

 1. 시작시간의 시,분,초, 끝시간의 시,분,초를 저장할 일차원 배열 a,b를 선언. 초로 환산한 시작과 끝시작을 저장할 변수 startTime, endTime을 선언합니다.

 

 2. a, b배열에 적절히 입력합니다.

 

📔 풀이과정

 각 시간을 초로 환산한 값은 시 * 3600 + 분 * 60 + 초가 됩니다. a, b배열 각각에 대해 해당공식을 적용해 startTime, endTime에 저장합니다.

 

📔 정답출력

 1. startTime > endTime인 경우 : 자정을 넘겼으므로 24시 * 3600 - startTIme + endTime이 곧 택시에 손님을 태운 시작시간과 손님이 내린시간의 시간 차이입니다. 이 값을 출력합니다.

 2. 그 외 : 그냥 endTime - startTime한 값을 출력합니다.


📕 Code

#include <bits/stdc++.h>
using namespace std;
int a[3], b[3], startTime, endTime;
int main(){
    scanf("%d : %d : %d", &a[0], &a[1], &a[2]);
    scanf("%d : %d : %d", &b[0], &b[1], &b[2]);
    startTime = a[2] + a[1] * 60 + a[0] * 3600;
    endTime = b[2] + b[1] * 60 + b[0] * 3600;
    if(startTime > endTime) cout << 24 * 3600 - startTime + endTime;
    else cout << endTime - startTime;
}