22193

#include <stdio.h>

int main(void){
    int num1, num2;
    int val1, val2;
    int result;

    scanf("%d %d", &num1, &num2);
    scanf("%d", &val1);
    scanf("%d", &val2);
    
    result = val1*val2;
    printf("%d", result);
    return 0;
}

ㅋㅋ ㅎㅎ 1271번 하기 싫어서 다른 문제 풀고 있었는데 비슷한 문제가 나왔다... ㅜ!!
longlong으로도 풀 수 없는 문제,,!! ㅜㅜ 어쩔 수 없지,, 2번은 못 피한다..

그렇지만 내 힘으로 풀기는 어렵기에 다른 분의 코드가 어떻게 작동되는 건지 하나하나 풀어보기로 함


#include <stdio.h>

int main() {
    int n, m;
    scanf("%d %d", &n, &m);
    char a[50000], b[50000];
    scanf("%s\n%s", a, b);

    int result[100000];

    for (int i = 0 ; i < m ; i++) {
        for (int j = 0 ; j < n ; j ++) {
            int temp = (a[n-1-j]-'0') * (b[m-1-i]-'0'); //문자에서 '0'을 빼면 숫자와 동일
            result[n+m-1-i-j] += temp;  
        }
    }

    for (int i = n+m-1 ; i > 0 ; i--) {
        result[i-1] += result[i] / 10;
        result[i] %= 10; 
    }

    int flag = 0;
    for (int i = 0 ; i < n+m ; i++) {
        if (flag == 0) {
            if (result[i] != 0)
                flag = 1;
            else if (i == n+m-1)
                printf("0");
        }
        if (flag != 0)
            printf("%d", result[i]);
    }
    return 0;
}

출처:

https://imototot.tistory.com/268

ㅎㅎ 이렇게 코드만 복붙 하면 얼마나 좋을까 ㅎㅎ 

그치만 나는 공부를 해야 하는 사람..!!
이건 타자로 치기보단 반복문을 써보면서 따라가야 이해가 더 잘 될 것 같아서 손글씨로 공부해 보았다. 

(사실 손글씨 공부하고 여기에 타자로 정리할라고 했지만 ㅎㅎ,,, 귀찮음 이슈)

이렇게 따라가 봤는데, 이렇게만 해서는 뭐가 뭔지 그냥 따라가는 것 밖에 안되기에 

그냥 곱셈으로는 어떤 원리인지 살펴본 결과

char로 받는 것은 어느 정도 예상 가능했지만,,
이런 원리로 푸는 것을 생각하는 것과
이런 원리를 코드로 작성하는게 생각보다 더 어려운 것 같다..ㅜㅜ

정말 이렇게 혼자 힘으로 코드 짜시는 분 보면 대단하신것 같다.

 

오늘 놀면서 한 것도 있고 늦게 시작한 것도 있지만 이거 한다고 시간 다 씀 ㅎ,,

 

+ Recent posts