티스토리 뷰

반응형

 

[Python] 백준 알고리즘 온라인 저지 2588번 : 곱셈

 

Python3 코드

A = int(input())  # 첫번째 입력받은 문자 : 숫자로 변환
B = input()       # 두번째 입력받은 문자 : 문자열 그대로 둠

# 문자열의 인덱스를 이용해서 두번째 입력 받은 문자를 하나씩 숫자로 반환하고 A와 곱한다.
AxB2 = A * int(B[2])
AxB1 = A * int(B[1])
AxB0 = A * int(B[0])
AxB = A * int(B)

print(AxB2, AxB1, AxB0, AxB, sep='\n')
# sep='\n'로 줄바꿈

 

 

Python3 코드 풀이

1. 코드 풀이의 전체적인 내용 요약

이번 문제는 (세 자릿수) x (세 자릿수) 곱셈 과정을 코드로 나타내 보는 문제이다. 총 4개의 숫자를 출력한다. 먼저 3개의 숫자는 두 번째 입력받는 수의 백의 자리, 십의 자리, 일의 자릿수를 각각 첫 번째 입력받는 세 자리 수와 곱한 값이다. 마지막 숫자는 첫 번째 입력한 수와 두 번째 입력받은 수를 곱한 값이다. 

 

총 4개의 수를 도출하기 위해서 첫번째 입력받는 수는 int 타입으로 변환하고 두 번째 입력받는 수는 문자열 상태로 각 자리 숫자를 나눈 후 int 타입으로 변환해서 첫 번째 입력받는 수와 곱하였다. 자세한 풀이는 아래에서 계속 설명한다.

 

2. 코드 상단 두 수를 입력받는다.

A = int(input())  # 첫번째 입력받은 문자 : 숫자로 변환
B = input()       # 두번째 입력받은 문자 : 문자열 그대로 둠

우선 숫자를 입력받을 때마다 변수에 지정하였다. input 함수는 사용자가 숫자를 입력하더라도 문자열로 입력받게 된다. 이때, 첫 번째 입력받는 수 A는 int함수를 이용해서 바로 정수로 변환하였고 두 번째 입력받는 숫자 B는 문자열 그대로 두었다. 이렇게 두 번째 입력받은 숫자 B를 문자열로 그대로 둔 이유는 이 숫자를 한 자리씩 떼어내야 하기 때문이다. 문자열은 split 함수를 이용하든 인덱스로 문자의 위치를 이용하든 하나씩 분리를 할 수가 있지만 숫자는 그렇게 할 수가 없기 때문이다. 

 

3. 코드 중간 두 수의 곱셈과정을 코드로 나타낸다

# 문자열의 인덱스를 이용해서 두번째 입력 받은 문자를 하나씩 숫자로 반환하고 A와 곱한다.
AxB2 = A * int(B[2])
AxB1 = A * int(B[1])
AxB0 = A * int(B[0])
AxB = A * int(B)

이 문제에서 출력해야 하는 값은 첫 번째 입력받은 수 A와 B의 각 자리의 수를 곱한 값이다. 그래서 두 번째 입력받은 B의 각 자리를 인덱스 기호를 이용하여 하나씩 불러내고 그 불려진 문자를 int 함수를 이용해서 정수로 변환하였다. 그리고 A와 B의 각 자릿수를 곱한 값을 변수에 선언하였다. 위에서부터 A와 B의 1의 자리 수의 곱, A와 B의 10의 자릿수의 곱, A와 B의 100의 자리 수의 곱, A와 B의 곱이다.

변수 이름은 블로그에 올리기 위해서 AxB2 이런 식으로 정해 보았는데 오히려 좀 가독성이 떨어지는 느낌도 있는 것 같다. 어쨌든 A와 B의 각 자릿수를 곱한 값이라는 걸 표현하려고 했다. 

 

4. 코드 하단, 출력문을 작성한다.

print(AxB2, AxB1, AxB0, AxB, sep='\n')
# sep='\n'로 줄바꿈

문제에서 (3), (4), (5), (6)에 들어갈 값을 하나씩 세로로 출력해야 한다. print 함수를 이용해서 출력할 값을 쉼표로 구분해서 입력했고 값 하나를 출력하고 줄 넘김이 될 수 있도록 sep=파라미터에 '\n' 이스케이프 문자를 입력했다. sep 파라미터는 print 함수에서 출력할 값이 여러 개일 때 각 값의 사이사이에 삽입할 문자를 지정할 수 있는 파라미터이다.

 

이스케이프 문자는 백슬러시뒤에 문자를 조합해서 사용하는 문자이고 이스케이프 문자마다 각각의 기능 있다. 이번 문제에서 사용한 건 백 슬래시와 n을 조합한 '\n' 문자로 줄 넘김을 의미한다.

 

반응형
댓글
반응형