본문 바로가기

C 언어

백준으로 배우는 C 언어 09. 곱셈

저번 문제에서 나눗셈의 나머지를 구하는 방법에 대해서 설명했었는데요, 학교에서도 초등학교 때 말고는 나머지를 쓸 일이 거의 없었던 것처럼 나머지를 구해서 어디에 사용할지 모르겠는 분들이 있을 겁니다. 그런데 프로그래밍의 세계 속에서는 나머지가 은근히 많이 사용된다는 걸 알고 계시나요? 우리가 생각할 때는 그냥 당연한 것들이 컴퓨터 속에서는 계산을 해야만 구현이 가능한 것들이 종종 있는데요, 이번 문제에서 그 예가 나옵니다. 


 

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

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

torotoblog.tistory.com

 

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

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

torotoblog.tistory.com


드디어 입출력과 사칙연산의 마지막 문제, 곱셈(#2588)입니다! 이 문제만 끝나면 백준 1단계를 끝낼 수 있겠군요 ㅎㅎ 문제를 살펴봅시다. 곱셈을 할 때는 문제에 보이는 것과 같은 과정을 거치게 되죠. 우리는 당연하게 472 * 5, 472*8, 472*3 이렇게 받아드리지만 컴퓨터는 이 당연한 걸 이해하지 못합니다. 우리는 385라는 세 자리 숫자를 보더라도 각각 3, 8, 5로 인식할 수 있지만 컴퓨터한테는 385는 더도, 덜도 아닌 그냥 385이기 때문이죠. 그렇기 때문에 3, 8, 5로 각각 인식시키기 위해서는 따로 계산하는 과정을 거쳐야 하고, 이때 나머지를 이용하면 간단하게 계산이 가능합니다. 코드를 살펴보시죠.

#include <stdio.h>

int main(void) {
    int a, b;
    scanf("%d", &a);
    scanf("%d", &b);
    printf("%d\n", a*(b%10));
    printf("%d\n", a*(b/10%10));
    printf("%d\n", a*(b/100));
    printf("%d\n", a*b);
    return 0;
}

우선은 문제에서 입력을 두 번 하라고 했기 때문에 scanf를 두 번 사용해서 숫자들을 따로 받아야 하는 점을 주의해 주세요. 그러면 바로 어떻게 나머지를 이용해서 385를 3, 8, 5로 나누는지 알아보도록 하죠. 

printf("%d\n", a*(b%10));

감이 좀 오시나요? b, 즉 385를 10으로 나누고 그 나머지를 구하면 어떤 숫자가 나올까요? 385 ÷ 10은 몫이 38, 나머지가 5가 나옵니다. 그저 10으로 나누기만 했을 분인데 나머지를 구하자 우리가 필요한 5가 나왔습니다. 그러면 8은 어떻게 구할까요?

printf("%d\n", a*(b/10%10));

10의 자리 숫자는 조금 더 복잡하지만 천천히 보면 이번에도 아주 간단합니다. 385를 10으로 나누면 38이 나오고, 38을 다시 한번 10으로 나눠서 나머지를 구하면 되죠. 그럼 마지막으로 3을 구해 봅시다. 

printf("%d\n", a*(b/100));

네 그렇습니다. 그냥 385를 100으로 나누면 몫으로 3이 나오죠. 참 간단하죠?

이렇게 나머지와 몫을 활용하면 숫자들을 하나 하나로 분리하는 작업을 할 수 있습니다. 이 외에도 특정 수의 배수를 찾는 등 다양한 상황 속에서 나머지와 몫을 사용하게 됩니다.

자, 이제 문제에서 요구한 대로 출력이 되도록 마저 코딩을 끝내고 테스트를 해 봅시다. 결과가 잘 나오네요.

제출을 해 봅시다! 백준에서 언어를 C로 선택한 다음 제출 버튼을 클릭해주세요.

성공!

다음 강좌는 백준 단계별 2단계인 if문으로 돌아오겠습니다 ㅎㅎ


 

백준으로 배우는 C 언어 10. 두 수 비교하기

백준의 단계별 풀어보기 1단계를 마치고 두 번째 단계입니다! 입출력과 사칙연산에서 프로그래밍에 대해 간단하게 맛을 봤으니 이제는 본격적으로 깊게 파고 들어가 봅시다! 프로그래밍을 할 때 제일 많이 사용되..

torotoblog.tistory.com