728x90
2588번 - 곱셈 ( www.acmicpc.net/problem/2588 )
#include <stdio.h>
int main() {
int a, b;
scanf("%d\n%d", &a, &b);
printf("%d\n", a * (b % 10));
printf("%d\n", a * ((b % 100) - (b % 10)) / 10);
printf("%d\n", a * (b/100));
printf("%d", a * b);
}
처음에 이걸 어떻게 풀어야 하나 많이 고심 하다가 결국 인터넷에 검색을 해봤었는데, 간단하게 생각하면 풀 수 있었던 문제였다.
더보기를 클릭하면 복잡하지만 내가 이해한 모든 것을 적어놨다.
더보기
위 그림이 이번 문제이다.
(1) 번과 (2) 번을 곱하는 과정의 (3), (4), (5) 번을 출력하고 마지막으로 곱한 값인 (6) 번을 출력해야한다.
처음에는 문제를 보고 몇번 포기 했는데, 푸는 방법을 알고 나서는 문제가 쉬워졌다.
푸는 방법은 아래와 같다.
(3) 번은 472 * 5
(4) 번은 472 * 8
(5) 번은 472 * 3
위 숫자를 구하려면 (2) 번에 주어진 385 를 나누거나 나머지를 구해서 풀어야 한다.
먼저 (3) 번을 예시로 들어보면,
385에서 5가 나오게 해야되는데, 385를 10으로 나누면 380이고, 나머지는 5다.
그렇다면 여기서 간단하게 385%10 을 출력하면 5가 나오고, 이 5를 472에 곱해야 하니까 출력할 때 식은 472 * (385 % 10) 이 된다.
(4) 번이랑 (5) 번 또한 곱할 값을 구해내서 계산하면 된다.
(4) 번
385 를 100으로 나누면 300이 나오고, 나머지는 85가 된다.
8을 만들기 위해선 우선 5가 빠져야 되는데, 5를 구하는 방법은 (3) 번에서 한번 했었다.
5를 만들기 위해 385 % 10을 하고, 85 - 5 = 80 이 되는데, 80으로 계산을 하면 원래 출력하려고 했던 값에 0이 하나 더 붙으니까 0도 없애줘야 한다. 방법은 간단하게 10으로 나누면 된다.
모두 다 해서 합해 보면 출력할 때 식은 472 * ((385%100) - (385%10)) / 10 이 되겠다.
(5) 번
이게 제일 쉽다. 385 / 100 만 해도 된다. 물론 385를 100으로 나누면 3.85지만,
내가 위에 쓴 답은 자료형을 int라고 입력해서 3까지만 값을 계산하기 때문에 틀린 값이 아니다.
하지만, 더 정확한 값을 입력하려면 (4) 번에서 85를 구한 것을 100으로 나눈 값을 구하고, 385를 100으로 나눈 것과 빼면 된다. 즉, 정확한 값으로 출력하기 위해서는 (385 / 100) - ((385 % 100) / 100) 으로 입력하면 된다.
정확한 답 🔽
#include <stdio.h>
int main() {
int a, b;
scanf("%d\n%d", &a, &b);
printf("%d\n", a * (b % 10));
printf("%d\n", a * ((b % 100) - (b % 10)) / 10);
printf("%d\n", a * ((b / 100) - ((b % 100) / 100)));
printf("%d", a * b);
}
백준 단계별로 풀어보기 1단계를 모두 끝냈다! ㅎ_ㅎ
뿌듯...
728x90
반응형
'개인공부 > Baekjoon Online Judge' 카테고리의 다른 글
[C++] 9498번 (0) | 2021.04.30 |
---|---|
[C++] 1330번 (0) | 2021.04.29 |
[C++] 10869번 / 10430번 (0) | 2021.04.29 |
[C++] 1008번 (0) | 2021.04.28 |
[C++] 1000번 / 1001번 / 10998번 (0) | 2021.04.28 |