백준 2525번 : 오븐 시계 문제 풀이
https://www.acmicpc.net/problem/2525
1. 문제
2. 풀이
이전 문제와 비슷한 방식이지만
입력을 분으로 받고
시간이 23 이상이 되면 0으로 초기화 하고 1부터 시작해야 한다
#include <stdio.h>
int main() {
int h, m, t;
scanf("%d %d %d", &h, &m, &t);
scanf 를 이용하여 현재 시간과( h ) 분( m ) 요리하는데 필요한 시간( t ) 를 입력받는다
분은 60을 기준으로 나누고
시간은 24보다 클때와 같을 때를 기준으로 나누었다
m += t;
if (m >= 60) {
h += m / 60;
m %= 60;
요리하는 데 필요한 시간은 분으로 입력받기 때문에 분( m ) 과 더한다
분( m )이 60보다 크거나 같을 때
시간 ( h )에 분( m )을 60으로 나눈 몫을 더한다
분( m )은 60으로 나눈 나머지로 바꾼다
if (h > 24)
h %= 24;
else if (h == 24)
h = 0;
}
시간( h )이 24보다 클 때
시간( h )을 24로 나눈 나머지로 정한다
else if 문을 사용해서 if 문과 구별을 해주었다
시간(h)이 24와 같을 때 시간( h )을 0으로 정한다
최종적으로 제출한 코드이다
#include <stdio.h>
int main() {
int h, m, t;
scanf("%d %d %d", &h, &m, &t);
m += t;
if (m >= 60) {
h += m / 60;
m %= 60;
if (h > 24)
h %= 24;
else if (h == 24)
h = 0;
}
printf("%d %d", h, m);
return 0;
}
3. 다른 사람이 제출한 코드
https://kiffblog.tistory.com/185
#include <stdio.h>
int main(void)
{
int temp;
int hour, min, time; //현재 시각(시, 분), 요리 시간
scanf("%d %d", &hour, &min);
scanf("%d", &time);
temp = hour * 60 + min + time; //분으로 환산해 더하기
hour = temp / 60; //시간으로 변환
if (hour > 23) hour -= 24; //24시가 넘으면 0으로 바꾸기
min = temp % 60; //나머지는 분
printf("%d %d", hour, min);
return 0;
}
1. 시간( hour ) , 분 ( min ), 요리시간 ( time ) 을 전부 분으로 바꾸어 temp 에 저장한다
2. 시간( hour )은 temp 를 60으로 나눈 몫이다
3. 시간( hour )이 23을 넘는다면 시간에서 24를 뺀다
4, 분( min )은 temp 를 60으로 나눈 나머지이다
조건이 많아서 if 문을 적어도 3개는 사용해야 한다고 생각했는데
하나밖에 사용하지 않아서 신기하면서 놀란 코드였다
'Coding > baekjoon' 카테고리의 다른 글
[백준 / baekjoon] 2739번 : 구구단 [C] (0) | 2023.11.23 |
---|---|
[백준 / baekjoon] 2480번 : 주사위 세개 [C] (0) | 2023.11.22 |
[백준 / baekjoon] 2884번 : 알람 시계 [C] (0) | 2023.11.20 |
[beakjoon] 14681번 : 사분면 고르기 [C] (0) | 2023.11.19 |
[baekjoon] 2753번 : 윤년 [C] (0) | 2023.11.16 |