[백준] Baekjoon Online Judge

문제
7:00부터 19:00까지 전화 요금은 1분에 10원이다.
19:00부터 7:00까지 전화 요금은 1분에 5원이다.
상근이가 전화를 건 시간과 통화 시간이 모두 주어졌을 때, 전화 요금을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 상근이가 건 전화의 수 N이 주어진다. (1 ≤ N ≤ 100)
다음 N개 줄에는 상근이가 건 전화에 대한 정보가 HH:MM DD와 같은 형식으로 주어진다.
HH:MM은 전화를 건 시간이며, DD는 통화 시간이다. DD는 최대 60이며, MM과 DD사이에는 공백이 하나 주어진다.
만약 시나 분이 한자리 숫자라면, 앞에 0이 하나 주어진다.
시간은 00:00부터 23:59까지이다.
출력
총 전화 요금을 출력한다.
풀이
#include <iostream>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
int N, cost = 0;;
cin >> N;
while (N--) {
string s;
int n;
cin >> s >> n;
int time = (s[0] - '0') * 600 + (s[1] - '0') * 60 + (s[3] - '0') * 10 + (s[4] - '0');
while (n--) {
if (420 <= time && time < 1140) cost += 10;
else cost += 5;
time++;
if (time == 1440) time = 0;
}
}
cout << cost << '\n';
return 0;
}
int time = (s[0] - '0') * 600 + (s[1] - '0') * 60 + (s[3] - '0') * 10 + (s[4] - '0');
입력 받은 전화를 건 시간을 분으로 계산하였다.
while (n--) {
if (420 <= time && time < 1140) cost += 10;
else cost += 5;
time++;
if (time == 1440) time = 0;
}
위에서 계산한 분에 통화 시간을 1씩 더하면서 요금을 계산하는 부분의 코드이다. 문제에서 주어진 조건에 따라 cost에 더해지는 요금이 달라진다. 수를 계속 더하다가 time이 23:59을 넘어가면 0으로 초기화해준다.
'백준 > C++' 카테고리의 다른 글
[Baekjoon/C++] 11505번 - 구간 곱 구하기 (0) | 2025.04.10 |
---|---|
[Baekjoon/C++] 29615번 - 알파빌과 베타빌 (0) | 2025.04.09 |
[Baekjoon/C++] 20006번 - 랭킹전 대기열 (0) | 2025.04.07 |
[Baekjoon/C++] 2476번 - 주사위 게임 (0) | 2025.04.06 |
[Baekjoon/C++] 10709번 - 기상캐스터 (0) | 2025.04.05 |