블램의 일상 IT카페

백준 2588번 [곱셈] - 풀이. ( / 와 %를 이해하자.) 본문

IT/알고리즘 문제 풀이

백준 2588번 [곱셈] - 풀이. ( / 와 %를 이해하자.)

ble_ram 2022. 11. 15. 20:27

문제.


 

 

내가 틀린 이유.


: 아마 나뿐만이 아니라 다들 그랬을거 같은데 472까진 알겠는데 385를 어떻게 처리해야하나 엄청 고민했다.

반복문을 입혀볼까 생각도 했고, 385를 각각의 변수 선언하여 3, 8, 5로 하려했지만 당연히 안됐다. ㅋㅋ

 

몇시간 고민하기엔 너무 아깝다 생각해서 타 블로그를 참고하였다.

본인처럼 수학적 사고가 힘든 분들은 문제를 놓아주도록 하자..

 

*하지만 수학적 능력은 이 문제에선 곱셈과 나눗셈이면 충분했다!

정확하게 필요한 능력은 / 와 %를 어떻게 활용할 것인가 였다.( 내가 멍청 한 걸까....)

 

 

 

 

풀이.


#include <stdio.h>
int  main() {
	int a=0, b=0;
	
	scanf("%d %d",&a, &b);

	int n3 = a * (b % 10);
	//385에서 10으로 나눈 나머지(연산자 '%')는 5이다.(정수형이기에 컴퓨터가 소수점미만은 출력하지 않는다.)
     //그러므로 우리가 얻고싶던 한자리 수 5를 얻을 수 있다.
    
    int n4 = a * (b % 100/10);
	//385에서 100으로 나눈 나머지는 85이다.
    //이 85를 10으로 나눈 '몫'(연산자 '/')은 8이다.
     //이로써 우리가 얻고싶던 8을 얻었다.
    
    int n5 = a * (b / 100);
	//385에서 100으로 나눈 몫은 3이다.
     //이로써 우리가 얻고 싶었던 3을 얻었다.
    
    int n6 = a * b;
    //그냥 곱한 총값이다.

	printf("%d\n%d\n%d\n%d\n", n3, n4, n5, n6);

	return 0;
}

: 472는 냅두고 385를 각각 끊어서 계산하면 472 * 3, 472 * 8,,,, 되는 식이다.

그러므로 우리는 3, 8, 5 값을 따로 구해야했다.

그렇지만 따로 방법이 없기에 /와 % 수식을 이용해 몫 혹은 나머지를 처내는 방법으로 수식을 완성시킨 것.

 

물론 자리가 딱히 안정해져있어서 다행이였다.

만약 문제 조건이 

이 위치 그대로 입력받아 구현하여라라는 문제였으면 안먹힐 코드였다...

(이렇게는 어떻게 구현할까요? - 실력길러서 구현해보겠습니다.!)

 

이로써 또 수학적 사고의 중요함을 깨달았다....

수학 좀 꾸준히 해놀껄..


*뭔가 코드를 보면 알고리즘이나 수학수식이 이해가 되는데 막상 혼자 구현하려 하면 잘 떠오르지 않는다.

나만 그런건가... 암튼 이 문제는 정 안풀려 정답을 보고 푼 문제이다..(ㅠㅜ) 

Comments