2일차 - 프로젝트 매니징
문제 내용
- n개의 프로젝트를 해결하는데 걸리는 각각의 시간 c가 주어집니다.
- 플레이어가 프로젝트 해결을 시작한 시간 T시 M분이 주어집니다.
- T시 M분에 n개의 프로젝트 해결을 시작하여 모든 프로젝트 해결이 끝났을 때의 시간을 구하는 문제입니다.
해결 방법
- 시작 시간 + n개의 프로젝트 해결에 걸리는 시간을 계산하면 됩니다.
- 프로젝트 해결에 걸리는 n개의 시간들은 c분으로, 시작 시간은 T시 M분으로 주어지므로 단위를 통일할 필요가 있습니다.
- 시작 시간을 분 단위로 변환했습니다. 1시간은 60분이므로 T시 M분 -> (T * 60 + M)분이 됩니다.
- 모든 프로젝트 해결이 끝났을 때의 시간은 ?시 ?분의 형태로 출력해야 합니다.
- 계산한 총 시간을 sum이라 하면 시간은 60을 나눠서, 분은 60을 나눈 나머지로 볼 수 있습니다.
- ex) 70분 -> (70 / 60)시 (70 % 60)분 -> 1시 10분
- T시 M분에서 0 <= T < 24의 범위를 가지므로 T의 값이 24가 된다면 0으로 초기화하는 과정이 필요합니다.
- 이는 구한 T의 값에서 24를 나눈 나머지를 구하면 됩니다.
- ex) 27시 10분 -> (27 % 24)시 10분 -> 3시 10분
주의 사항
- T시 M분에서 T는 당연히 정수입니다. 계산한 총 시간 sum을 float형으로 받으면 계산 과정에서 sum / 60이 실수형으로 나타나므로 조심합니다.
작성 코드
#include <iostream>
using namespace std;
int main() {
int n,t,m;
int sum = 0;
int c;
cin >> n;
cin >> t >> m;
sum += t * 60 + m;
for(int i = 0; i < n; i++) {
cin >> c;
sum += c;
}
cout << (sum / 60) % 24 << " " << sum % 60 << endl;
}
소감
- 문제를 해결하는 건 어렵지 않았지만, 해결 방법을 글로 쓰는 것이 까다로웠던 문제였습니다.
- 이번 문제는 문제를 해결하는 과정보단 블로그 작성 과정에서 많은 걸 배웠습니다. 문제를 해결하는 것도 중요하지만, 이를 글로 정리하는 과정에서 더 많은 것을 얻을 수 있다는 걸 느꼈습니다.