본문 바로가기

baekjoon python 알고리즘

1.13 - [2588] 곱셈

728x90
반응형

<문제 조건>

문제

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

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

입력

첫째 줄에 (1)의 위치에 들어갈 세 자리 자연수가, 둘째 줄에 (2)의 위치에 들어갈 세자리 자연수가 주어진다.

출력

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

예제 입력 1 복사

472
385

예제 출력 1 복사

2360
3776
1416
181720

<문제 풀이>

사용 문법

이 문제를 풀기 위해 우리는 세로식 곱셈의 원리를 알아야 한다.

이 문제에서는 세 자리 수의 곱셈만 나와있으므로 아래의 원칙을 따른다고 할 수 있다.

 

세로식 곱셈은 변수1 X 변수2 가 있다면

 

첫째 줄 : 변수1 X 변수2의 n자리 수의 값

둘째 줄 : 변수1 X 변수2의 n-1자리 수의 값

셋째 줄 : 변수1 X 변수2의 n-2자리 수의 값

 

이렇게 나온 세 줄을 알맞게 더한 값이 답이 된다.

우선 첫째 줄은 1의 자리로 끝나는 것이 맞으므로 무엇을 곱할 필요가 없고,

둘째 줄은 10의 자리로 끝나므로 10을 곱해야 하고,

셋째 줄은 100의 자리로 끝나므로 100을 곱해야 한다.

 

또한, 이 문제를 풀기 위해서는 문자열의 index값 즉 순서값을 알아야 한다. 아래의 예시를 보며 익혀보자

변수1 = 123
변수1_첫째자리수 = 변수1[0] # 1
변수1_둘째자리수 = 변수1[1] # 2
변수1_셋째자리수 = 변수1[2] # 3

이렇게 "[]"를 사용해 나타낸다.

 

또한, 이 문제는 문자열과 숫자의 형변환이 중요하다.

순서값의 적용은 문자열에서만 가능하고, 출력을 하기 위해서는 숫자로 형변환을 해줘야 한다.

정답

a = int(input())
b = input()
print(a*int(b[2]))
print(a*int(b[1]))
print(a*int(b[0]))
print(a*int(b[2])+a*int(b[1])*10+a*int(b[0])*100)
728x90
반응형

'baekjoon python 알고리즘' 카테고리의 다른 글

2.1 - [1330] 두 수 비교하기  (55) 2022.03.13
2.0 - if문  (8) 2022.03.03
1.12 - [10430] 나머지  (6) 2022.03.03
1.11 - [18108] 1998년생인 내가 태국에서는 2541년생?!  (14) 2022.03.01
1.10 - [10926] ??!  (2) 2022.03.01