백준 웹사이트에서 [문제]->[단계별로 풀어보기]->[입출력과 사칙연산]에 있다. 겉으로 보이는 문제만 보면 초등학생 때부터 자주 접하던 곱셈 연산 방법이다. 하지만 이 문제는 사람처럼 푸는 것이 아닌 컴퓨터처럼 생각해야 하는 것이 중요하다.
Solution
num1=int(input())
num2=int(input())
num3=num1*(num2%10)
num4=num1*((num2%100)//10)
num5=num1*(num2//100)
num6=num1*num2
print(num3)
print(num4)
print(num5)
print(num6)
Explanation
(1)과 (2)에 들어갈 숫자를 각각 num1과 num2 라 설정하고 input() 함수를 통해 입력을 받는다. 이때 input() 함수는 기본 설정상 입력값을 문자열(string)로 받기 때문에 문제에 제시된 것처럼 입력받은 값이 자연수 이려면 int() 함수를 사용하여 변환한다.
이제 (3), (4), (5), (6)를 구하기 위해서는 컴퓨터처럼 생각해야 한다. (3)에 들어갈 수를 num3라고 했을 때, num3은 num1과 num2의 일의 자릿수와의 곱이다. 일의 자릿수를 구할 때는 10으로 나눈 나머지를 생각하면 되므로 나머지를 구할 때 쓰는 Modulus operator(%)를 사용해 num2%10처럼 num2의 일의 자리를 구할 수 있다.
마찬가지로, (4)에 들어갈 숫자 num4는 num1과 num2의 10의 자릿수와의 곱이므로 num2를 먼저 100으로 나눈 후 그 나머지를 10으로 나누었을 때 몫에 해당되는 값이므로 (num2%100)//10.
(5)에 들어갈 숫자인 num5는 num1과 num2의 백의 자리 숫자와의 곱이므로 몫을 구할 때 사용하는 floor division(//)을 사용하되 이때 주의할 점은 100으로 나누었을 때 몫을 계산해야 해당 숫자의 100의 자리를 구할 수 있다.
(6)에 들어갈 숫자 num6은 쉽게 생각해 num1과 num2의 곱이다.
Conclusion
이 문제를 풀기 위해선 사람의 직관적인 계산방식보다 컴퓨터처럼 계산하는 방식을 생각해야 한다. 특히 이 문제 풀이에 사용된 연산자 operator들의 사용법을 잘 익혀야 다음에 더 복잡한 알고리즘의 문제를 풀 때 쓰일 수 있다.
- 나머지를 계산하는 operator는 %
- 몫을 계산할 때 쓰는 operator는 //
추가적으로 기억해야 할 것들은 계산에 쓰일 숫자를 num이라고 가정했을 때 세 자리 숫자 계산 한정
- 해당 숫자의 1의 자릿수를 구할 때는 num%10
- 해당 숫자의 10의 자릿수를 구할 때는 (num%100)//10
- 해당 숫자의 100의 자릿수를 구할 때는 num//100
'Daily 코딩-Python' 카테고리의 다른 글
[파이썬] 백준 10171 (고양이)- print() 출력함수 활용 (0) | 2022.09.11 |
---|---|
[파이썬] 백준 2884번 (알람시계) (0) | 2022.09.11 |
[파이썬]백준 10926번 (??!) (0) | 2022.09.09 |
[파이썬]백준 10869번(사칙연산) (0) | 2022.09.07 |
[파이썬]백준1000번 (A+B) (0) | 2022.09.04 |
댓글