본문 바로가기

C 언어

백준으로 배우는 C 언어 19. 알람 시계

오늘 백준 사이트에 들어가 보니 if 문 단계에 문제가 하나 추가가 되었더라고요. 그래서 복습을 해볼 겸 오랜만에 if 문 문제를 가져왔습니다. 그럼 바로 문제를 풀어볼까요? 


 

백준으로 배우는 C 언어 07. A / B

이번 문제는 나눗셈 문제입니다. 원래 이 전에 뺄셈과 곱셈 문제가 두 개 더 있지만 06번 강좌랑 같은 내용을 다루기 때문에 중복이 돼서 바로 나눗셈 문제로 넘어온 점 양해 부탁드립니다. 이번 문제를 살짝 미..

torotoblog.tistory.com

 

백준으로 배우는 C 언어 08. 사칙연산

지금까지 덧셈, 뺄셈, 곱셈, 나눗셈을 배웠었죠! 그렇다면 이번에는 복습 겸 사칙연산 네 가지와 더불어 나눈 후 나오는 나머지 또한 출력하는 코드를 작성해 봅시다. 나머지는 아직 한 번도 안 해봤지만 다행히..

torotoblog.tistory.com


알람 시계(#2884) 문제는 입력된 시간에서 45분을 빼야 하는 문제입니다. 다만 시간은 60분 단위로 되어있기 때문에 일반적인 뺄셈 문제와는 조금 다르죠. 이 문제를 푸는 방법은 여러 가지가 있는데요, 제 생각에는 나눗셈과 나머지를 이용하는 게 제일 간단한 방법인 것 같더라고요. 코드를 살펴봅시다. 

#include <stdio.h>

int main(void) {
    int h, m, a;
    scanf("%d %d", &h, &m);
    
    if (h == 0)
        h = 24;
    
    a = h * 60 + m - 45;
    h = a / 60;
    m = a % 60;
    
    if (h == 24)
        h = 0;
    
    printf("%d %d\n", h, m);
    
    return 0;
}

1 시간이 60분이라는 특성을 이용해서 풀이한 방법입니다. 입력받은 시간과 분을 각각 h와 m 변수에 추가를 먼저 해준 뒤 분 단위로 바꿔서 45분을 빼준 거죠. 다만 0시 45분보다 작은 시간을 입력하게 되면 45분을 뺏을 때 되면 23시가 아닌 -1시로 표현되고, 분도 음수로 나오게 되죠. 그래서 if 문을 사용해 입력된 시간이 0이면 먼저 24로 변환해서 계산하고, 계산한 뒤에도 24시면 0으로 다시 바꿔주는 과정을 거쳐야 합니다. 

계산된 값을 60으로 나누었을 때 몫은 시간, 나머지는 분으로 사용하면 되겠죠? 만약 이 부분이 정확히 이해가 안 된다면 08. 사칙연산 문제를 참고해 보세요.

테스트를 해 봅시다. 빌드한 뒤 시간을 입력해보면 45분을 뺀 시간이 출력되네요.

이제 제출을 합시다. 백준에서 언어를 C로 설정하고 제출을 하시면 됩니다.

성공!


 

백준으로 배우는 C 언어 20. 별 찍기 - 2

이번 문제는 18. 별 찍기 - 1 문제와 비슷한데요, 별을 오른쪽 정렬로 해야 하기 때문에 조금 까다로운 부분이 있습니다. 프로그래밍을 처음 접하시는 분들은 조금 어렵게 느끼실 수도 있는데요, 경험이 쌓이다..

torotoblog.tistory.com