https://www.acmicpc.net/problem/2530
2530번: 인공지능 시계
첫째 줄에 종료되는 시각의 시, 분, 초을 공백을 사이에 두고 출력한다. (단, 시는 0부터 23까지의 정수이며, 분, 초는 0부터 59까지의 정수이다. 디지털 시계는 23시 59분 59초에서 1초가 지나면 0시 0
www.acmicpc.net
2525번 문제랑 매우 비슷한데 여기서 '초'가 추가된 것이라 계산이 조금 더 추가되었다.
우선 나의 코드를 먼저 보자.
#include <iostream>
using namespace std;
int main()
{
int hour, minute, sec = 0;
int give = 0;
cin >> hour >> minute >> sec;
cin >> give;
if (hour >= 0 && hour <= 23)
{
if (minute >= 0 && minute <= 59)
{
if (sec >= 0 && sec <= 59)
{
if (sec + give >= 60)
{
minute = minute + ((sec + give) / 60);
sec = ((sec + give) % 60);
if (minute >= 60)
{
hour = hour + (minute / 60);
minute %= 60;
}
if (hour >= 24)
hour %= 24;
cout << hour << " " << minute << " " << sec;
}
else
{
sec = sec + give;
cout << hour << " " << minute << " " << sec;
}
}
}
}
return 0;
}
내가 너무 코드가 길게 짰나라는 생각이 든다. 물론 정답으로 처리가 되었긴 한데..
정답인 다른 코드를 봐보자.
#include<stdio.h>
int main()
{
int a, b, c, n;
scanf("%d %d %d %d", &a, &b, &c, &n);
c+=n;
b+=c/60;
c%=60;
a+=b/60;
b%=60;
a%=24;
printf("%d %d %d", a, b, c);
return 0;
}
c언어로 짠 거긴 한데, 보면 수식이 너무 간단하다.
내가 if문을 너무 불필요하게 많이 쓰지 않았나 싶다.
맨 위의 3개의 if문은 굳이 필요없어 보이긴한다.
'백준 문제풀이 > 브론즈4' 카테고리의 다른 글
백준 5596번 - 시험 점수 (0) | 2021.10.18 |
---|---|
백준 2588번 - 곱셈 (0) | 2021.10.18 |
백준 2525번 - 오븐 시계 (0) | 2021.10.17 |
백준 2480번 - 주사위 세 개 (0) | 2021.10.17 |
백준 2420번 - 사파리 월드 (0) | 2021.10.17 |