BackEnd/Python

『Python』백준 2588

흑당망고 2022. 1. 18. 13:32
Olympiad > 한국정보올림피아드 > 한국정보올림피아드시․도지역본선 > 지역본선 2005 > 초등부 2번

의 문제라고 한다....요즘 초딩들 똑똑하다..내게는 너무 어려웠다...ㅠㅠㅠ

 

문제는 다음과 같다.

 


문제

(세 자리 수) × (세 자리 수)는 다음과 같은 과정을 통하여 이루어진다.

(1)과 (2)위치에 들어갈 세 자리 자연수가 주어질 때 (3), (4), (5), (6)위치에 들어갈 값을 구하는 프로그램을 작성하시오.


해설의 출처

 

사진 및 문제의 출처는 아래와 같다.

https://www.acmicpc.net/problem/2588

 

2588번: 곱셈

첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다.

www.acmicpc.net

 

블로그 보고 풀었으니 블로그에서 설명한 말을 간단하게 풀이해서 적도록 하겠다.

아래는 보고 푼 블로그의 출처이다. 감사합니다!!

 

https://goplanit.site/07.%20Algorithm(2588_py)/ 

 

<알고리즘> 백준 2588번 곱셈(파이썬)

백준 #2588 문제 바로가기 문제 : (세 자리 수) × (세 자리 수)는 다음과 같은 과정을 통하여 이루어진다. (1)과 (2)위치에 들어갈 세 자리 자연수가 주어질 때 (3), (4), (5), (6)위치에 들어갈 값을 구하

goplanit.site

 

 


코드

a = int(input())
b = int(input())

print (a * (b%10))
print (a * ((b%100)//10))
print (a * (b//100))
print (a * b)

위와 같은 방법을 채택하였다.


해설

우선 예시를 들고 진행하도록 하겠다.

a를 137이라고 하고

b는 238이라고 하자

 

그리고 문제의 (3)을 첫번째 줄

문제의 (4)를 두번째 줄

문제의 (5)를 세번째 줄로 생각하고

문제의 (6)을 네번째 줄로 생각을 한다고 가정하에 해설을 하도록 하겠다.

 

 

첫번째 줄

print (a * (b%10))

 

a에 곱한다.

무엇을? b를 10으로 나누고 남은 나머지를 a에다가 곱한다.

 

b를 238이라고 지정했으니 10으로 나누면 23.8 이고 나머지는 8이니까 8을 곱한다는 뜻이다.

 

결국 137 X 8 이 된다.

 

그러면 첫번째 줄이 해결이 된다.

 

 

두번째 줄

print (a * ((b%100)//10))

a에다가 곱한다.

무엇을? b를 100으로 나누고 남은 나머지를 10으로 나눈 값의 몫

 

b를 238이라고 했으니 100으로 나누고 남은 결과는 2.38이고 여기서 나머지는 38이고

여기서 나머지를 10으로 나눈값은 3.8이고 여기의 몫은 3이다.

 

결국 137 X 3 이된다.

 

그러면 두번째 줄도 해결이 된다.

 

 

세번째 줄

print (a * (b//100))

a에다가 곱한다.

무엇을? b를 100으로 나눈 값의 몫을 곱한다.

 

b를 238이라고 했으니 100으로 나누면 2.38이 되고 여기서 몫은 2이기 때문에

 

결국 137 X 2 가 된다.

 

그러면 세번째 줄도 해결이 된다.

 

네번째 줄

print (a * b)

말 그대로 a와 b를 곱한 값을 출력한다.

위에서는 표기를 위해서 %와 //를 사용했지만 여기는 결과 값만 출력하면 되기 때문에 이렇게 출력한다.

 

 

 

계산기

본인이 나누기 및 나머지를 구하기 힘들다면

OS에 내장된 계산기와 아래의 나머지 계산기를 사용하도록 하자

http://mwultong.blogspot.com/2007/12/remainder-calc.html

 

나누기 계산기; 나눗셈의 몫 나머지 값 구하기; Remainder Calc

 

mwultong.blogspot.com


후기

문제 자체는 어렵지 않았는데 내 수학 능력이 너무 딸렸다...ㅋㅋㅋㅋ 열심히 해야지!