티스토리 뷰

SMALL

 if문으로 간단하게 푸는 문제입니다. c언어로 풀었습니다.

 

문제는 아래 링크와 같습니다.

 

문제

 

2525번: 오븐 시계

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

www.acmicpc.net

 

코드  및 풀이

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

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

	scanf("%d", &C);

	if (B + C < 60)
		printf("%d %d", A, B+C);
	else {
		int hour = (B + C) / 60;
		int min = (B + C) % 60;
		if (A + hour < 24)
			printf("%d %d", A + hour, min);
		else
			printf("%d %d", A + hour - 24, min);
	}
}

 

 

 아주 간단한 문제이긴 하나, 조건을 빠뜨릴 수 있으니 주의해야했다.

변수의 이름은 문제에서 나온 입력 설명과 똑같이 A,B,C로 설정해주었다.

A B는 현재 시각, C는 요리하는 데 필요한 시간이다.

추가적으로 hour, min은 B+C가 60이 넘을 때, 시와 분이 함께 바뀌므로 각 추가해야하는 시간을 표시한 것이다.

즉, 결과값으로 A+hour min이 되는 것이다.

 

조건1 : A (0 ≤ A ≤ 23) 와 분 B (0 ≤ B ≤ 59)

조건2 : B+C >= 60일 때, '분'뿐만 아니라 '시'도 변한다

조건3 : 조건2에서 A+hour >= 24이면 '시'는 0부터 다시 더해진다는 것

 

조건들만 잘 충족하면 풀 수 있는 문제이다. 거기에 더불어 조건이 많이 붙는 코드일 수록 아래로 끌고 내려가자.

음, 조건이 적은 코드일 수록 먼저 입력해 해결해버리자. 그러고 맨 마지막에 조건 많은 코드를 입력한다면

코드를 클린하게 쓸 수 있다.

 

반응형
LIST
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함