문제 설명
신입생 광곽이는 학교 시정표가 적응이 되지 않아 시정표를 작성하는 프로그램을 만드려 한다.
1교시 시작하는 시, 1교시 시작하는 분, 한 교시의 길이(분), 쉬는시간의 길이(분), 총 교시 수, n 교시 후 점심시간, 점심시간의 길이(분)가 주어질 때 시정표를 작성하시오. (단, n교시와 점심시간 사이, 그리고 점심시간과 n+1교시 사이에는 쉬는시간이 없다.)
입력
1교시 시작하는 시, 1교시 시작하는 분, 한 교시의 길이(분), 쉬는 시간의 길이(분), 총 교시 수, n 교시 후 점심시간, 점심시간의 길이(분) 가 입력된다. 최종 출력되는 시간은 24시를 넘지 않으며, 한 교시 및 쉬는 시간의 길이도 60분 미만이다. 점심 시간은 100분 이하이다.
광곽은 좋은 학교라서 수업이 일찍 끝나더라도 반드시 점심은 먹이고 집으로 보낸다.
출력
출력 예시를 참고해서 출력한다.
정시의 경우에는 9:00과 같이 00이 모두 출력되어야 한다.
입력 예시
8 40 50 10 9 4 60
출력 예시
8:40-9:30 1교시
9:40-10:30 2교시
10:40-11:30 3교시
11:40-12:30 4교시
12:30-13:30 점심시간
13:30-14:20 5교시
14:30-15:20 6교시
15:30-16:20 7교시
16:30-17:20 8교시
17:30-18:20 9교시
나의 코드
#include <stdio.h>
int main()
{
int shour, smin, min, free, n, lunch, lmin;
int count=1, i; // 변수 선언
// 입력
scanf("%d %d %d %d %d %d %d",
&shour, &smin, &min, &free, &n, &lunch, &lmin);
if(lunch > n) lunch = n+1; // 점심시간 계산
else lunch++;
for(i=0;i<n+1;i++) // n+1만큼 반복(수업+점심)
{
while (smin >= 60) { // 분 시단위로변경
smin -= 60;
shour++;
}
// 현재 시간 출력
printf("%d:%02d-", shour, smin);
// 다음 시간이 점심시간이 아니면
if(i+1 != lunch) {
smin += min; // + 수업시간
while (smin >= 60) {
smin -= 60;
shour++;
}
// 끝나는 시간과 교시 출력
printf("%d:%02d ", shour, smin);
printf("%d교시\n", count++);
if(i+2 != lunch) // + 쉬는시간
smin += free;
}
else { // 다음 시간이 점심시간이면
smin += lmin; // + 점심시간
while (smin >= 60) {
smin -= 60;
shour++;
}
// 끝나는시간과 점심시간 출력
printf("%d:%02d ", shour, smin);
printf("점심시간\n");
}
}
return 0;
}
'알고리즘 공부 > CodeUp 문제풀이' 카테고리의 다른 글
코드업 1981:파일 입력 처리하기(C) (2) | 2023.10.19 |
---|---|
코드업 1510:홀수 마방진(C) (2) | 2023.10.18 |
코드업 1640:악성 프로그램 삭제하기(C) (0) | 2023.10.16 |
코드업 1602:절대값 함수(C) (0) | 2023.10.14 |
코드업 1291:바이러스 백신(C) (2) | 2023.10.13 |