본문 바로가기
코딩테스트

[C] 백준 2525번 - '오븐 시계' 풀이

by CuckooBird 2023. 1. 13.

https://www.acmicpc.net/problem/2525

 

2525번: 오븐 시계

첫째 줄에 종료되는 시각의 시와 분을 공백을 사이에 두고 출력한다. (단, 시는 0부터 23까지의 정수, 분은 0부터 59까지의 정수이다. 디지털 시계는 23시 59분에서 1분이 지나면 0시 0분이 된다.)

www.acmicpc.net

 


코드

#include <stdio.h>

int main(void) {

	int A, B, C;

	scanf("%d %d", &A, &B);
	scanf("%d", &C);

	int hour = A;
	int min = B + C;

	if (min >= 60) {
		hour += min / 60;
		min = min % 60;
	}
	if (hour >= 24) {
		hour = 24 - hour;
	}

	printf("%d %d", hour, min);

	return 0;

}

이렇게 풀었는데 끝까지 틀렸습니다가 뜨더라고요 그래서 구글링해서 찾아봤습니다.

#include <stdio.h>

int main(void) {
	int A, B, C;
	scanf_s("%d %d", &A, &B);
	scanf_s("%d", &C);

	A += C / 60;
	B += C % 60;

	if (B >= 60) {
		A += 1;
		B -= 60;
	}
	if (A >= 24) {
		A -= 24;
	}

	printf("%d %d", A, B);

	return 0;

}

이 코드로 써야 정답 처리가 됩니다.

어렵게 생각할 것 없이 입력 받은 값을 60으로 나눈 몫은 시간이 되고 , 나머지는 분이 됩니다.

그 후에 해당 값을 현재 시간에 더했을 때, 시간은 23이 넘는지와 분은 59를 넘는지 확인하는 코드가 나옵니다. 


후기

정답코드에서 입력받은 C를 바로 +, - 하는 것은 배울만 했는데, 그렇다고 이것만을 정답처리 하기에는 너무 답정너스러운 면이 있었습니다. 브론즈라 그런건지는 모르겠지만..

이것도 전에 틀렸는데 그냥 넘어간 문제입니다. 전에 썼던 코드를 보니까 삼항연산자도 쓰고 전처리기로 변수선언도 하고.. ㅋㅋ 아주 열심히는 풀었는데 당시에 새로 배운 문법이 많기도 했고 프로그래밍언어를 새로 접했어서 포인트가 많이 빗겨나간 것 같았습니다. 예전 저의 코드 보는 것도 재밌네요 ㅋㅋㅋ