Q) 백준 2588번 -곱셈 with python
(세 자리 수) × (세 자리 수)는 다음과 같은 과정을 통하여 이루어진다.
(1)과 (2)위치에 들어갈 세 자리 자연수가 주어질 때 (3), (4), (5), (6)위치에 들어갈 값을 구하는 프로그램을 작성하시오.
첫째 줄에 (1)의 위치에 들어갈 세 자리 자연수가, 둘째 줄에 (2)의 위치에 들어갈 세자리 자연수가 주어진다.
<답>
이 문제에서 일단 주의해야할 점은
전에 포스팅들처럼 두개의 숫자열이 엔터 형식으로 구분되어 한번에 입력되는 것이 아니다.
처음엔 그런 줄 알고 input.split("\n")을 사용하여 문자열을 저장시켰었는데
이렇게 하면 계속 런타임 에러가 떠서 완전 당황;;; 그래서 계속 고민하다가 구글링을 했는데 472와 385, 두개의 숫자가 따로따로 입력받는다는 것을 알게 됨..
이 문제의 핵심은 385라는 숫자를 3, 8, 5 처럼 각각 나누어줘야 한다는 것이다.
그 말은 즉슨, 472는 따로 건들 필요가 없고 숫자형으로 잘 출력되기만 하면 된다.
먼저 간단한 첫째 줄부터 출력해보자.
472를 A라는 변수로 받아볼 것이다.
A = int(input())
input함수를 통해 입력값을 받아주었고, int함수를 통해 입력받은 것을 정수형으로 바로 변환시켜주었다.
이제 385를 입력시켜볼 것이다.
385는 각각의 자리수로 숫자가 쪼개져야 한다.
숫자형을 입력받게 되면 385는 쪼개지지 않는다. 385를 하나의 숫자로 인식하기 때문이다.
그래서 이것을 문자형 인자로 받아주어서 문자를 쪼개는 형식을 저장을 할 것이다.
그 후 정수형으로 형태를 바꾸어주면 된다.
먼저 385를 입력시켜 B라는 변수에 저장시켜보겠다.
B = input()
B가 잘 저장되었고, type도 str로 잘 저장됨을 볼 수 있다.
그리고 나중에 (6)에서 B도 곱셈에 활용되므로 y라는 변수에 정수형으로 저장시켜보겠다.
y = int(B)
이제 이 문자를 각 자리수별로 쪼개볼것이다.
쪼개기 위해 이 문자를 리스트로 저장을 시켜야한다. 간단하다. list함수를 사용하면 된다.
이번엔 변수 C에 저장해보겠다.
C = list(B)
저장시켜보면 type이 list로 잘 저장되었음을 볼 수 있고, 385가 각 숫자 따로따로 저장됨을 볼 수 있다.
이제 3, 8, 5 각각을 출력해보겠다. 이는 list 속 index를 잘 활용하면 된다.
파이썬의 인덱스는 0부터 출발한다.
즉, 3이 0번째, 8이 1번째, 5가 2번째 자리임을 알 수 있다. 이 각각을 a, b, c에 저장시킨 후 정수형으로 변환시켜보겠다.
a = int(C[2])
b = int(C[1])
c = int(C[0])
잘 저장됨을 볼 수 있고, 이제 이것들을 이용해 곱셈을 계산해보겠다.
print(A*a,A*b,A*c,A*y,sep = "\n")
잘 출력됨을 볼 수 있다.
< 최종코드 >
A = int(input())
B = input()
C = list(B)
y = int(B)
a = int(C[2])
b = int(C[1])
c = int(C[0])
print(A*a,A*b,A*c,A*y,sep = "\n")
'우당탕탕 파이썬 with 하루하나 알고리즘' 카테고리의 다른 글
백준 9498 파이썬 - 시험 점수에 해당하는 등급 출력하기 (0) | 2022.03.13 |
---|---|
백준 1330 파이썬 - if문을 통해 두 수 비교하기 (0) | 2022.03.12 |
백준 10430 파이썬 - 복잡한 연산(나눗셈, 나머지, 곱셈, 한번에 출력) (0) | 2022.03.10 |
백준 18108 파이썬 - 서기연도로 바꾸기 (input 값 연산) (0) | 2022.03.10 |
백준 10869 파이썬 - 사칙연산 (몫, 나머지 출력하기, print 구분자) (0) | 2022.03.10 |