문제(https://www.acmicpc.net/problem/2588)
(세 자리 수) × (세 자리 수)는 다음과 같은 과정을 통하여 이루어진다.
(1)과 (2)위치에 들어갈 세 자리 자연수가 주어질 때 (3), (4), (5), (6)위치에 들어갈 값을 구하는 프로그램을 작성하시오.
첫째 줄에 (1)의 위치에 들어갈 세 자리 자연수가, 둘째 줄에 (2)의 위치에 들어갈 세자리 자연수가 주어진다.
첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다.
예제 입력 :
472
385
예체 출력 :
2360
3776
1416
181720
코딩 하기 앞서 :
그림에서 (3)의 경우 2번째로 받은 수의 1의 자리 수로 곱셈을 해야하고, (4)의 경우 2번째로 받은 수의 10의 자리 수로 곱셉을 하며, 마지막 (5)의 경우 2번째로 받은 수의 100의 자리 수로 곱셈을 해야한다.
각 자리의 수를 구하는 방법은 여러가지 방법이 있지만, 우선 앞서 활용한 사칙연산을 이용하면 다음과 같이 할 수 있다.
1의 자리 구하기 : (385를 100으로 나눈 나머지를 구하기=>85)를 10으로 나눈 나머지를 구하기 => 5
10의 자리 구하기 : (385를 100으로 나눈 나머지를 구하기=>85)를 10으로 나눈 몫을 구하기 => 8
100의 자리 구하기 : (385를 100으로 나눈 몫을 구하기 => 3
이렇게 각 구한 자리의 수를 처음 1번째로 받은 수와 곱하면, (3),(4),(5)를 구할 수 있다. 그리고 (6) 구하기 위해서는 (5)*100 + (4) *10 + (3)*1 을 해야한다.
코드 1:
first = int(input())
second = int(input())
first_cal = ((second%100)%10)*first #(3) 할당
second_cal = ((second%100)//10)*first #(4) 할당
third_cal = (second//100)*first #(5) 할당
print(f"{first_cal}\n{second_cal}\n{third_cal}")
print(third_cal*100+second_cal*10+first_cal) #(6) 구하고 출력
*문자열을 활용하면 아래와 같이 구성할 수 있다.
두번째 수를 문자열로 받고, 각 자리의 문자를 가져와 int( )를 통해 형 변환을 한 후 연산을 진행했다.
second = input()으로 하고 385를 받으면 아래와 같다.
위의 표 처럼 값이 들어갔다고 볼 수 있고 각각의 위치는 앞부터 0으로 시작하는 위치이다.
그래서 second[2] 는 "5"이고, second[1]은 "8"이며, second[0]은 "3"이다.
이때 이 값들은 숫자가 아니기 때문에, int( ) 형 변환 시키고 연산을 진행해야 된다.
코드 2:
first = int(input())
second = input()
p1 = first*int(second[2])
p2 = first*int(second[1])
p3 = first*int(second[0])
print(p1)
print(p2)
print(p3)
print(f"{p1+p2*10+p3*100}")
위와 같은 방식은 예제처럼 출력은 되지만, 그림처럼 출력은 되지 않는다. 그림처럼 출력은 아래와 같이 하면 된다.
추가 코드:
first = int(input())
second = str(input())
p1 = first*int(second[2])
p2 = first*int(second[1])
p3 = first*int(second[0])
print(f"{first:8d}")
print(f"{int(second):8d}")
print("--------")
print(f"{p1:8d}")
print(f"{p2:7d}")
print(f"{p3:6d}")
print("--------")
print(f"{p1+p2*10+p3*100:8d}")
{변수 명:옵션}
옵션에 .8f 와 같이 되어 있으면 소수점을 8까지 표시이고
옵션에 6d 와 같이 되어 있으면 6개의 공간을 두고 숫자를 표시를 하는 것이다.(오른쪽 정렬)
* 관련 문법 정리
https://multitasker-sh.tistory.com/3
[Python] input( ) & 형 변환 &map( )(모든 문제)
input( ) Python에서 값을 입력받기 위해 input( ) 사용한다. 1) 숫자, 철자, 단어, 문장 모든 것을 input( )으로 받을 수 있다. 1-1) 정확히는 문장(문자열)을(만) 받는다. ex) input( )으로 받은 숫자 1은 숫자 1
multitasker-sh.tistory.com
https://multitasker-sh.tistory.com/4
[Python] 문자열 (str) & len() (모든 문제)
문자열 1) 문자열에 문자 접근 문자열은 문자들이 열을 이루고 있는 것으로 문자열에 속해 있는 특정 문자에 접근하기 위해서는 위치를 지정해줘야한다. 우선 "Hello world!" 라는 문자열은 와 같이
multitasker-sh.tistory.com