-
[Algorithm#4] 백준 2588 곱셈 (Python)Programming/Algorithm Pb 2026. 3. 12. 05:41반응형
목표

(1)과 (2)위치에 들어갈 세 자리 자연수가 주어질 때 (3), (4), (5), (6)위치에 들어갈 값을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 (1)의 위치에 들어갈 세 자리 자연수가, 둘째 줄에 (2)의 위치에 들어갈 세자리 자연수가 주어진다.
출력
첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다.
풀이
1. 사칙연산을 이용한 풀이방법
변수 설정
- 세자리 수 저장을 위한 int형 변수 A,B
풀이 방법:
- 입력되는 두 변수가 첫째 줄, 둘째 줄로 입력이 되므로, input()을 각각 선언해서 입력 받는다.
- 입력 받은 A,B 변수를 이용해서 (3), (4), (5), (6) 을 차근히 계산한다.
- (3) 은 A 식에 B의 첫번째 자리를 곱한식이므로 A * (B%10)
- (4) 는 A 식에 B의 두번째 자리를 곱한식이므로 A * ((B%100 //10)
- (5) 는 A 식에 B의 세번째 자리를 곱한식이므로 A * (B//100)
- (6) 은 A식과 B식을 곱한식이므로 A *B
A = int(input()) B = int(input()) print(A * (B%10)) print(A * ((B%100) // 10)) print(A * (B//100)) print(A * B) """ 코드 길이 : 112B (Byte) 메모리 : 32412KB (약 32MB) - A와 B가 차지하는 메모리는 28바이트 - 파이썬 인터프리터 실행 메모리 31000KB ~ 32000KB 시간 : 32ms (0.032초) """A = int(input()) B = int(input()) print(A * (B % 10), A * ((B % 100) // 10), A * (B // 100), A * B, sep = "\n") # 위 소스와 메모리, 시간 동일 # 하지만, print() 단일 호출로 입출력 시간이 감소2. 배열 값으로 처리하는 방법 (chilituna94님 소스 참고)
변수 설정
- int 정수 변수 a
- 문자열 변수 b
풀이 방법:
1번 풀이(사칙연산) 방식으로 보면, 세자리수가 아닌 자리수가 변경되었을때 확장성이 좋지 않다.
그래서 배열의 자리값을 이용하면, 확장성 문제를 처리할 수 있다.
- 곱셉의 기준값이 되는 첫번째 A식을 위해 int 정수 변수 a를 입력받는다
- 두번째 입력되는 자연수의 각각 자리 값을 기억하기 위한 스트링 변수 b를 입력받는다.
- 반복문을 사용하여 스트링 변수 b의 뒤 배열 값부터 가져와 일의 자리, 십의자리, ... 를 차례대로 a와 곱한다.
- 마지막으로 정수 A와 명시적 정수 변환을 진행한 B를 곱셈한다.
A=int(input()) B=input() for i in range(1,4): print(A*int(B[-i])) print(A*int(B))비교 항목 1. 수학 연산 (몫/나머지) 2. 한 줄 출력 (sep="\n") 3. 반복문 + 문자열 (현재 코드) 가독성 보통 (수식이 김) 나쁨 (한 줄이 너무 김) 매우 좋음 실행 속도 빠름 가장 빠름 (미세한 차이) 빠름 확장성 나쁨 나쁨 매우 좋음 반응형'Programming > Algorithm Pb' 카테고리의 다른 글
[Algorithm#6] 백준 2480 주사위 세개 (Python) (0) 2026.03.19 [Algorithm#5] 백준 2884 알람 시계 (Python) (0) 2026.03.18 [Algorithm#3] 백준 17413 단어뒤집기 2 (0) 2026.01.24 [Algorithm#2] 백준 1316 그룹단어 체커 (0) 2026.01.23 [Algorithm#1] 백준 1157 문자열 (0) 2026.01.23