본문 바로가기

알고리즘/SWEA

7732

 

static char * solution(void)
{
    	static char buf[16];
        string s1, s2;
    	int h[3], m[3], s[3];
    
    	cin >> s1 >> s2;

	h[0] = (s1[0] - '0') * 10 + (s1[1] - '0');
	m[0] = (s1[3] - '0') * 10 + (s1[4] - '0');
	s[0] = (s1[6] - '0') * 10 + (s1[7] - '0');

	h[1] = (s2[0] - '0') * 10 + (s2[1] - '0');
	m[1] = (s2[3] - '0') * 10 + (s2[4] - '0');
	s[1] = (s2[6] - '0') * 10 + (s2[7] - '0');

	if ((s[2] = s[1] - s[0]) < 0)
	{
		s[2] += 60;
		m[1] -= 1; //분에서 하나 가져옴
	}

	if ((m[2] = m[1] - m[0]) < 0)
	{
		m[2] += 60; //시간에서 하나 가져옴
		h[1] -= 1;
	}

	if ((h[2] = h[1] - h[0]) < 0)
	{
		h[2] += 24; //보정
	}

	sprintf(buf, "%02d:%02d:%02d", h[2], m[2], s[2]);

	return buf;
}

일단 기본적인 개념은 약속 시간에서 현재 시간을 빼서 남은 시간을 구하는 것이다.

그러나 한가지 고려해야할 부분이 있는데, 약속 시각이 내일인 경우이다.

현재 시각 == 04:00:00, 약속 시각이 == 01:00:00 이라면

남은 시간은 25:00:00 - 04:00:00 == 21:00:00 으로 처리해야 한다는 점이다.

그래서 이에 대한 처리가 마지막 if 문이다.

 

'알고리즘 > SWEA' 카테고리의 다른 글

7964  (0) 2021.10.31
7965  (0) 2021.10.31
7584  (0) 2021.10.31
7853  (0) 2021.10.31
7854. 최약수  (0) 2021.10.31