백준 2884번

CharliePark·2020년 9월 17일
0

TIL

목록 보기
39/67

BOJ 2884 : 알람시계

단계별로 풀어보기에서 빼먹은 문제들 먼저 해결하고 있다

먼저 알람시계 문제

간단한 문제이다.

목표 시각보다 45분 앞서게 시각을 정해야 하므로, 45분을 시각에서 빼면 된다.

이때 목표 시각의 '분'이 45분 보다 작다면 시각에서 '시'가 빠지는 것을 고려해 '분'과 '시' 를 알맞게 계산해주면 되고

'분'이 45분 보다 작을때 '시'가 0이라면 23시로 바꿔주면 된다.


#include <stdio.h>

int main()
{
    int H, M;
    scanf("%d %d", &H, &M);
    
    if (M>=45)
        M -= 45;
    else
    {
        H -= 1;
        
        if(H<0)
            H += 24;
        
        M = (M + 60) - 45;
    }
    

    
    printf("%d %d", H, M);
}

이런식으로 간단하게 작성이 가능한 문제인데..

굳이 유의할 점을 찾자면

처음에는 else 안에 들어간 if (H<0) 부분을 밖에 빼서


#include <stdio.h>

int main()
{
    int H, M;
    scanf("%d %d", &H, &M);
    
    if (M>=45)
        M -= 45;
    else
    {
        H -= 1;
            
        M = (M + 60) - 45;
    }
    
    if(H<0)
        H += 24;

    
    printf("%d %d", H, M);
}


이런 식으로 작성했었는데, 이때는 H<0 조건을 굳이 검사할 필요가 없을 때도 매번 검사하게 된다.

따라서, H가 직접적으로 변화되는 부분에 if (H<0) 부분을 집어넣는게 맞다.

(else 로 넘어가지 않으면 if (H<0) 부분을 검사하지 않으므로)

이런 간단한 문제에서는 별 차이가 없는 부분이나 미리미리 유의하는 습관을 가지자..!

0개의 댓글