728x90
문제
link: https://www.acmicpc.net/problem/33557
두 수 A와 B가 주어졌을 때, A×B 세로식 곱셈에서 받아올림을 하지 않고 바로 결과에 적는 잘못된 방식의 결과가 실제 곱셈 결과와 같은지를 판단하는 문제이다.
위 사진과 같이 자릿수가 같은 것끼리 곱한 후 결과를 바로 아래에 적는 식으로 숫자를 나열한다. 이것이 일반 곱셈 결과와 같으면 1, 다르면 0을 출력한다.
자릿수가 짧은 수의 자리가 비어 있는 경우(ex: 위 사진에서 천만 자리 수) 수를 그대로 적는다.
접근
두 수를 int가 아닌 str 형식으로 받아 한 자리씩 읽으며 곱하는 식으로 잘못된 곱셈 결과를 도출했다. 자릿수가 짧은 수는 자릿수가 긴 수와 길이가 같아지도록 앞을 1로 채워 준 후 사용한다.
자릿수가 짧은 수의 앞을 1로 채울 때는 rjust()를 사용했다. rjst(길이, 채울 문자)로 문자열을 원하는 길이만큼 늘리고, 빈 자리를 원하는 문자로 채울 수 있다.
코드
import sys
input = sys.stdin.readline
for _ in range(int(input())):
A, B = input().strip().split()
C = ''
D = int(A)*int(B)
if len(B) > len(A): A, B = B, A
B = B.rjust(len(A), '1')
for i in range(len(A)):
C += str(int(A[i])*int(B[i]))
if int(C) == D:
print(1)
else: print(0)
728x90
'코딩테스트' 카테고리의 다른 글
[백준] 10026 | 적록색약 [파이썬/python] (0) | 2025.05.19 |
---|---|
[백준] 26517 | 연속인가? ? [파이썬/python] (0) | 2025.05.12 |
[백준] 1268 | 임시 반장 정하기 [파이썬/python] (1) | 2025.05.09 |
[백준] 1991 | 트리 순회 [파이썬/python] (0) | 2025.05.03 |
[백준] 5430 | AC [파이썬/python] (1) | 2025.04.30 |