본문 바로가기
작업/Problem Solving

백준 2588번(곱셈) 파이썬(python)으로 해결

 

안녕하세요. 천보기입니다. 백준 2588 해결입니다!

(세 자리 자연수) * (세 자리 자연수)의 결과를 출력하라는 문제입니다.

 

2588번 문제

 


 

조건

 

입력은 한 줄씩 (1), (2)

출력은 한 줄씩 (3), (4), (5), (6) 순서대로

 

 

(6)의 경우에는 두 입력값을 그대로 곱하면 나오는 값이라 문제 X

(3)의 경우는 472 * 5

(4)의 경우는 472 * 8

(5)의 경우는 472 * 3

 

 

각각의 값들이 (2)의 입력값에서 한 자리만 꺼내 곱한 것과 같습니다.

값들을 어떻게 하나씩 꺼내올까요...?

 

385를 하나의 숫자로 인식하는게 아니라

3, 8, 5 라는 하나의 값들로 인식시킬 수 있는 방법을 사용했습니다.

 


 

*숫자를 문자열로 치환하여 분리하기*

 

 

input() 함수로 입력을 하고 나면 입력값을 무엇으로 지정할지 타입을 정합니다.

자연수이기 때문에 int나 float로 지정하게 되죠.

 

 

하지만, 385는 문자열로 인식하게 하여 값들을 분리하겠습니다.

num2라는 변수에 입력받은 385를 str() 함수를 통해 문자열로 인식시킵니다.

 

 

그러면 num2에는 하나의 공간에 숫자가 하나씩 저장되게 됩니다.

이후에 for 반복문으로 배열의 공간 하나하나의 값들을 꺼내와 (1)의 값과 곱하기합니다.

 

 

중요한 것은 문자열로 되어있기 때문에 곱할 때에는 다시 정수화 시켜야 한다는 것

그리고 배열의 처음이 아닌 마지막 공간부터 역순으로 탐색해야 한다는 것

 

2588 제출한 코드

 

 

 

len() 함수는 인자의 크기를 반환하는 함수입니다.

num2의 크기는 3, 8, 5 공간을 쓰기 때문에 3을 반환하게 됩니다.

 

 

range(len(num2), 0, -1) = range(3, 0, -1)과 같습니다.

3부터 시작하고 0이 되면 반복을 끝내며 -1씩 값이 바뀐다는 의미입니다.

 

 

그렇게 되면 x는 3에서 시작하기 때문에 배열 공간을 벗어납니다.

그래서 x-1로 공간을 벗어나지 않게 합니다.

 

 

출력 결과

 

-끝-