본문 바로가기

알고리즘, 자료구조

[백준| 단계별로 풀어보기 1단계 | Python] 2588번 곱셈

1. 문제목적

나머지 연산자와 나숫셈 연산자를 이해할 수 있다.

2. 필요개념

정수의 각 자리수 접근

정수의 각 자리수에 접근하기 위해서는 주로 문자열 변환 또는 나머지 연산과 정수 나눗셈 연산을 사용합니다. 하지만 이 문제의 경우는 입력받은 두 번째 정수의 각 자리수를 순차적으로 첫 번째 정수와 곱해야 하기 때문에, 나머지 연산과 정수 나눗셈을 사용하는 것이 더 적합합니다.

나머지 연산자 (%)와 정수 나눗셈 연산자 (//)

  • **나머지 연산자 (%)**는 어떤 수를 다른 수로 나누었을 때의 나머지를 구합니다. 예를 들어, 123 % 10은 3을 반환합니다.
  • **정수 나눗셈 연산자 (//)**는 나눗셈의 결과에서 소수점 이하를 버리고 정수 부분만 반환합니다. 예를 들어, 123 // 10은 12를 반환합니다.

이 두 연산을 사용하여 두 번째 정수의 일의 자리, 십의 자리, 백의 자리 숫자를 추출하고 이를 첫 번째 정수와 곱할 수 있습니다.

문제 해결 절차

  1. 두 개의 정수를 입력받습니다.
  2. 두 번째 정수의 일의 자리, 십의 자리, 백의 자리 숫자를 차례대로 추출합니다.
  3. 추출한 각 자리수를 첫 번째 정수와 곱합니다.
  4. 각 곱셈 결과와 최종 곱셈 결과를 출력합니다.

3. 코드작성

# 입력 받기
a = int(input())
b = int(input())

# 두 번째 입력된 정수의 각 자리수별로 첫 번째 정수와 곱하기
third_digit = a * (b % 10)
second_digit = a * ((b // 10) % 10)
first_digit = a * (b // 100)

# 결과 출력
print(third_digit)
print(second_digit)
print(first_digit)
print(a * b)

이 방식은 주어진 정수 b의 각 자리수를 분리하고, 각각을 다른 정수 a와 곱하는 과정을 보여줍니다. 여기서 사용된 연산자는 나머지 연산자 %와 정수 나눗셈 연산자 //입니다.

일의 자리수 구하기 (third_digit)

  • b % 10 연산은 b를 10으로 나눈 나머지를 구하며, 이는 b의 일의 자리수를 의미합니다.
  • 예를 들어, b가 123일 경우, 123 % 10은 3을 반환합니다. 이 값에 a를 곱함으로써, b의 일의 자리수와 a의 곱을 얻습니다.

십의 자리수 구하기 (second_digit)

  • b // 10 연산은 b를 10으로 나눈 후, 소수점 이하를 버리고 정수 부분만을 반환합니다. 이는 b의 십의 자리와 그 이상의 자리수를 남깁니다.
  • 다음으로, (b // 10) % 10 연산은 b를 10으로 나눈 결과에 다시 10을 나눈 나머지를 구합니다. 이는 b의 십의 자리수를 의미합니다.
  • 예를 들어, b가 123일 경우, 123 // 10은 12를 반환하고, 12 % 10은 2를 반환합니다. 이 값에 a를 곱함으로써, b의 십의 자리수와 a의 곱을 얻습니다.

백의 자리수 구하기 (first_digit)

  • b // 100 연산은 b를 100으로 나눈 후, 소수점 이하를 버리고 정수 부분만을 반환합니다. 이는 b의 백의 자리와 그 이상의 자리수를 남깁니다.
  • 예를 들어, b가 123일 경우, 123 // 100은 1을 반환합니다. 이 값에 a를 곱함으로써, b의 백의 자리수와 a의 곱을 얻습니다.

4. 마무리

10을 나누어 뒷자리를 자르고 나머지를 구해서 앞자리를 잘라 자리수를 도출하는 방법을 이해할수 있었다.

6. 문제링크

 

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