[C언어 코드업 문제풀이] CodeUp 1173 : 30분전

코드업 1173번 30분전 문제 풀이 해답입니다.

 

1. 문제 설명

 

수호는 30분 전으로 돌아가고 싶은 1人 이다.

공백을 기준으로 시간과 분이 주어진다.

그러면 이 시간을 기준으로 30분전의 시간을 출력하시오.

예)

12 35  =====> 12 5

12 0 ======> 11 30

11 5 ======> 10 35

 

2. 입력

 

시와 분이 입력된다.

( 시의 범위 : 0~ 23)

(분의 범위 : 0~ 59)

 

3. 출력

 

입력된 시간의 30분 전의 시간을 출력하시오.

 

4. 입력 예시

 

12 35

 

5. 출력 예시

 

12 5

 

6. 문제 풀이

 

#include <stdio.h>
 
 
int main (void)
{
    
    int hour, min;
    scanf("%d %d",&hour, &min);
    if(min - 30 >= 0){ //ex 31분
        printf("%d %d", hour, min -30);
        
    }
    else{//시가 바뀌는 경우
        hour--;
        if(hour<0){hour =23;}
        
        printf("%d %d", hour, 30+min);
    }
 
    return 0;
}
 

 

    if(min - 30 >= 0){ //ex 31분

        printf("%d %d", hour, min -30);

        

    }

되돌리기전 시간이 30분이상일경우 분만 바뀌게 됩니다. ex) 11시 40분 -> 11시 10분

 

그것이 아니라 시간이 바뀌어야 할 경우는

    else{//시가 바뀌는 경우

        hour--;

        if(hour<0){hour =23;}

        

        printf("%d %d", hour, 30+min);

   }

 

시간을 -1 해주지만 0시에서 -1이 아닌 23시이므로 if문을 통해 0보다 작을때 23시로 바꾸어 주며

30+min 을 통해 뒤돌아간 시간을 표현해줍니다. ex) 11시 20분 -> 10시 50분

댓글()