https://www.acmicpc.net/problem/2588
처음 이 문제를 봤을 때 상당히 꼬아서 생각을 했다.
배열에 넣을까 다 분해해서 하드 코딩을 해볼까 고민부터 했는데, 단순한 계산이었다.
먼저, 하나하나 하드 코딩한 코드이다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int i, j, num1, num2, sum = 0, finalSum = 0;
//숫자 입력 받기
scanf("%d", &num1);
scanf("%d", &num2);
//1 계산 하기
sum += (num1 % 10) * (num2 % 10);
sum += ((num1 % 100) - (num1 % 10)) * (num2 % 10);
sum += (num1 - (num1 % 100)) * (num2 % 10);
printf("%d\n", sum);
finalSum += sum;
sum = 0;
//2 계산하기
sum += (num1 % 10) * ((num2 % 100) / 10);
sum += ((num1 % 100) - (num1 % 10)) * ((num2 % 100) / 10);
sum += (num1 - (num1 % 100)) * ((num2 % 100) / 10);
printf("%d\n", sum);
finalSum += sum * 10;
sum = 0;
//3 계산하기
sum += (num1 % 10) * ((num2 - (num2 % 100))/100);
sum += ((num1 % 100) - (num1 % 10)) * ((num2 - (num2 % 100)) / 100);
sum += (num1 - (num1 % 100)) * ((num2 - (num2 % 100)) / 100);
printf("%d\n", sum);
finalSum += sum * 100;
printf("%d\n", finalSum);
}
이렇게 구현할 필요가 절대 없는 문제였다. 매우 매우 쉬운 문제다.
단순한 곱셈 문제이기 때문에 정말 곱해주기만 하면 된다.
단순화시킨 코드는 아래와 같다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int num1, num2;
//숫자 입력 받기
scanf("%d", &num1);
scanf("%d", &num2);
// 계산 하기 -중간과정
printf("%d\n", num1 * (num2 % 10));
printf("%d\n", num1 * ((num2 % 100) / 10));
printf("%d\n", num1 * ((num2 - (num2 % 100)) / 100));
//계산 하기 -결과
printf("%d", num1 * num2);
return 0;
}
아침에 코딩을 하니까 머리가 굳어 있어서 너무 어렵게 생각하는 것 같다.
아침에 한 문제씩 풀면서 머리를 풀어야겠다.
'Programming > C' 카테고리의 다른 글
[C언어] 재귀함수 개념 / 재귀함수 문제 & 설명 (0) | 2021.08.14 |
---|