#20. 백준 2525번 문제 풀이: 오븐 시계 문제 원본 보기
시각이 주어지고, 분이 주어졌을 때 시각에 추가로 주어진 분을 더해서, 시각으로 표시하는 프로그램. 시간은 24시간제. 입력은 첫줄에는 [시간 분], 둘째 줄에는 추가 분 이 주어짐.
입력/출력
--입력--
14 30
20
--출력--
14 50
--입력--
17 40
80
--출력--
19 0
--입력--
23 48
25
--출력--
0 13
문제풀이+해설
첫번째 방법은 시각의 분에 추가된 분을 더해서, 시간과 분으로 나누어 시간을 더해주는 방법이 있다.
10 30 에 40분이 추가된다면, 분을 더해주면 10시 70분 > 10시+1시 10분 > 11시 10분 으로 계산한다.

두번째 방법은 시간을 분으로 환산해서 추가된 분을 더해주고, 다시 시각으로 환산하는 방법이다.
10 30 에 40분이 추가된다면 10시*60분=600분+30분+40분= 670분 > 670/60(시간) 670%60(나머지는 분) > 11시 10분이 된다.
두번째 방법이 알고리즘이 간결하기 때문에 두번째 방법으로 코드를 작성해 보자.
code sol.
#include <stdio.h>

int main() {
  int h, m, m2, hm; 
  //m2:추가시간, hm: 시각을 분으로 환산할 때 사용할 변수
  scanf("%d %d\n%d", &h, &m, &m2); 
  // 시간, 분, 추가시간 값을 입력받아 정수로 대입.
  hm = h*60 + m; // 시간에 60을 곱해 분으로 환산하고 +분을 더한다.
  hm += m2; // 추가 시간(분)을 더한다.
  printf("%d %d", (hm / 60) % 24, hm % 60);
  // 전체 분을 60으로 나눈값은 시간, 나머지 값은 분이 된다.
  // 24시간을 넘어가지 않도록 %24로 시간의 나머지 값으로 계산
  return 0;
}
© 코드솔 - CodeSol. All Rights Reserved.