프로그래밍/백준

[파이썬(Python)] 백준 2588번 곱셈 : 세자리수 곱셈

정정훈훈 2021. 10. 7. 14:41
반응형

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

 

2588번: 곱셈

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

www.acmicpc.net

 

 

 

백준 2588번 문제는 두 세자리수 정수의 곱을 구하는 문제입니다.

초등학생 때 배웠던 세자리수의 곱셈의 풀이과정에 발생하는 숫자들이 출력하게 하는 코드를 짜면 됩니다.

 

 

1. 문자열을 이용한 풀이(반복문X)

<코드>

A = int(input())

B = input()

 

print(A*int(B[2]))

print(A*int(B[1]))

print(A*int(B[0]))

print(A*int(B))

 

 

 

(1) (2)

문자열 입력 함수 input()으로 A와 B에 저장할 정수값을 (문자열로) 입력받아

A만 정수형으로 변환해주었고 B는 문자열 형태로 남겨두었습니다.

 

문자열은 문자열을 구성하는 문자에 접근할 수 있습니다.

따라서 세자리 곱셈의 중간과정에서

B의 각 자리수를 곱하여 더하는 과정을 표현할 수 있습니다.

 

(3) (4) (5)

따라서 int(B[2])세자리 정수 B의 의 자리 숫자,

int(B[1])세자리 정수 B의 의 자리 숫자,

int(B[0])세자리 정수 B의 의 자리 숫자가 됩니다.

 

(6)

최종 결과값입니다.

 

 

 

 

2. 문자열을 이용한 풀이(반복문O)

<코드>

A = int(input())

B = input()

 

for i in range(30, -1) :

    print(A * int(B[i - 1]))

 

print(A * int(B))

 

위 과정을 for 반복문으로 나타낼 수 있습니다.

 

1. 문자열을 이용한 풀이(반복문X)의 (3) (4) (5)번째 줄 코드를 반복문으로 바꾸면 됩니다.

range를 (2, -1, -1)로 하고 (4)번째 줄 코드의 int(B[i - 1])를 int(B[i])로 바꿔도 좋습니다.

while 반복문을 사용하는 것도 좋아요.

 

 

 

 

3. 산술 연산자를 이용한 풀이

A = int(input())

B = int(input())

 

print(A * (B % 10))

print(A * (B % 100 // 10))

print(A * (B // 100))

print(A * B)

 

 

매번 int로 형 변환을 해주기 귀찮다면,

산술 연산자(%와 //)를 사용하는 것도 좋은 방법입니다.

 

 

(1) (2)

A와 B를 각각 int(input())으로 입력받습니다(정수)

 

(3)

B가 385라 하면,

B % 10385를 10으로 나눈 나머지, 즉 5입니다.

셋째자리 5가 계산됩니다.

 

(4)

B % 100 // 10은

B % 100 값에 다시 // 10을 해주겠다는 의미입니다.

 

B = 385를 100으로 나눈 나머지 85이고,

85를 다시 10으로 나눈 몫은 8이 계산됩니다.

따라서 둘째자리 8이 계산됩니다.

 

 

(5)

B // 100385를 100으로 나눈 몫, 즉 3입니다.

따라서 첫째자리 3이 계산됩니다.

 

 

 

코린이 대학생의 풀이였습니다.

풀이에 오류가 있거나 빈약한 부분이 있다면 얼마든지 댓글을 남겨주시기 바랍니다.

 

 

https://like-a-happy-cat.tistory.com/ 

 

키보드 꾹꾹이하는 대학생

 

like-a-happy-cat.tistory.com

 

 

https://blog.naver.com/snake6862

 

정훈 블로그 : 네이버 블로그

하고 싶은 거 다 하고 살기

 

 

 

 

 

 

 

 

 

반응형