구현, 수학

[백준] 1408. 24 풀이

hch06 2025. 2. 2. 17:54

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

 

계산의 편의를 위해 현재 시간과 임무를 시작한 시간을 초로 환산한다.
만약 현재 시간이 임무를 시작한 시간보다 클 경우: {(24시)-(현재시간)} + (임무를 시작한 시간)
만약 현재 시간이 임무를 시작한 시간보다 작을 경우: (임무를 시작한 시간) - (현재시간)

이렇게 구한 남은 초를 다시 시, 분, 초로 바꿔 출력한다.

 


C

더보기
더보기
#include <stdio.h>

void printTime(int v){
    printf("%02d:", v / 3600); v -= (v / 3600) * 3600;
    printf("%02d:", v / 60); v -= (v / 60) * 60;
    printf("%02d", v);
}

int main() {
    int now_h, now_m, now_s; // 현재 시간
    scanf("%02d:%02d:%02d", &now_h, &now_m, &now_s);
    int h, m, s; // 시작한 시간
    scanf("%02d:%02d:%02d", &h, &m, &s);
    
    /* 현재시간과 시작한 시간을 초로 환산 */
    now_s = (now_h * 3600) + (now_m * 60) + now_s;
    s = (h * 3600) + (m * 60) + s;
    
    if(now_s < s) printTime(s - now_s);
    else printTime(((24*60*60) - now_s) + s);
}

Python

더보기
더보기
def printTime(v):
    print('%02d:' % (v // 3600), end=''); v -= (v // 3600) * 3600
    print('%02d:' % (v // 60), end='');   v -= (v // 60) * 60
    print('%02d' % v)

now_h, now_m, now_s = map(int, input().split(':'))
h, m, s = map(int, input().split(':'))

now_s = (now_h * 3600) + (now_m * 60) + now_s # 시간을 초로 환산
s = (h * 3600) + (m * 60) + s

if now_s < s: printTime(s - now_s)
else: printTime(((24*3600) - now_s) + s)