SWEA/[D2]

[C언어] SWEA 1976 시각 덧셈

ruming 2022. 2. 26. 04:06

목표 : 시 분으로 이루어진 시각을 2개 입력받아 더한 값을 시 분으로 출력

- 12시간제

 

분이 시로 넘어갈 때와 시가 12를 넘어갈 때 등의 경우를 처리해주면 될 것 같다.

분을 먼저 더하고 시를 더하는데, 분은 60이상일 때와 아닐 때를 나눈다. 시는 12이상일 때와 아닐 때를 구분한다.

for(test_case = 1; test_case <= T; ++test_case)
	{
		int t1, t2, m1, m2;
        scanf("%d%d%d%d", &t1, &m1, &t2, &m2);
        printf("#%d ", test_case);
        if(m1+m2 >=60){
            if(t1+t2+1 > 12){
                printf("%d %d\n", t1+t2+1-12, m1+m2-60);
            }else{
                printf("%d %d\n", t1+t2+1, m1+m2-60);
            }
        }else{
            if(t1+t2 > 12){
                printf("%d %d\n", t1+t2-12, m1+m2);
            }else{
                printf("%d %d\n", t1+t2, m1+m2);
            }
        }
	}
	return 0;//정상종료시 반드시 0을 리턴해야합니다.
}

 

 

+전에 풀었던 코드

#include <stdio.h>
#include <stdlib.h>
int main(void){
	int t, i, j;
	int *T, *S;
	scanf("%d", &t);
	T = (int*)malloc(sizeof(int)*t*4);
	S = (int*)malloc(sizeof(int)*t*2);
	for(i=0; i<t*4; i++)	scanf("%d", &T[i]);
	for(i=0, j=0; i<t*4; i=i+4, j=j+2){
		if(T[i+1]+T[i+3]>=60){
			if(T[i]+T[i+2]+1 >= 12){
				S[j] = T[i] + T[i+2] + 1 - 12;
				S[j+1] = T[i+1] + T[i+3] - 60;
			}
			else{
				S[j] = T[i] + T[i+2] + 1;
				S[j+1] = T[i+1] + T[i+3] - 60;
			}
		}
		else{
			if(T[i]+T[i+2] >= 12){
				S[j] = T[i] + T[i+2] - 12;
				S[j+1] = T[i+1] + T[i+3];
			}
			else{
				S[j] = T[i] + T[i+2];
				S[j+1] = T[i+1] + T[i+3];
			}	
		}
	}
	for(i=0, j=1; i<t*2; i=i+2, j++)	printf("#%d %d %d\n", j, S[i], S[i+1]);
	return 0;
}