-
[Python] 백준 2588 곱셈Python_알고리즘 2021. 6. 24. 16:40
문제 바로가기
문제분석
# 두개의 세 자리 수를 입력 받고 곱했을 때, 곱해지는 과정에서 나오는 숫자들과 그 숫자들의 합을 구한다.
# 정수 a와 b의 각 자리 수를 곱하고, 곱한 값들을 일의자리부터 백의자리까지 변환해주고 더한다.
# 끝으로, 자리수를 변환한 수들을 모두 더한 값까지 최종 출력하면 된다.
문제풀이
# 방법 1
a = int(input()) # 정수 472 b = list(map(int, input())) # [3, 8, 5] one = a * b[2] ten = a * b[1] hun = a * b[0] print(one, ten, hun, sep='\n') # 한줄씩 2360 3776 1416 출력 print(one + ten *10 + hun * 100) # 181720
- 정수 a에다가 각각의 b 인덱스를 곱해주고 그 결과를 변수에 저장해서 출력한다.
- 입력값으로 받은 b는 input함수를 통하면서 str이 되었으므로 다시 map함수를 통해 int로 바꿔서 리스트에 담아 연산이 가능하게 한다.
- 세 수를 그냥 더하면 자릿수에 맞지 않게 더해지므로 각 자리수에 맞게 10과 100을 곱해준 후 더해서 출력한다.
# 방법 2
b = int(input()) one = a * (b%10) ten = a * ((b//10)%10) hun = a * (b//100) print(one, ten, hun, a*b, sep='\n')
- 곱해야하는 세자리 수 모두 정수형으로 받는다.
- a에 b의 일의자리, 십의자리, 백의자리를 곱하는데 b는 아래와 같이 구한다.
b = 385,
b%10 = 5 (b를 10으로 나눈 나머지)
(b//10)%10 = 8 (b를 10으로 나눈 몫을 다시 10으로 나눈 나머지)
b//100 = 3 (b를 100으로 나눈 몫)# 그런데 만약, 입력값이 세자리 수가 아니라 n의 자리수라면?
# 방법 3
a = int(input()) b = input() for i in range(len(b), 0, -1): # 3부터 1까지 -1씩 값을 바꿔 탐색한다. print(a * int(b[i-1])) print(a*int(b))
# range(start, stop, step) 함수를 이용해 for문을 작성하면 된다.
# 입력값의 개수부터 시작해 1씩 줄어드는 역순으로 i를 넣어주면,
# b의 마지막 인덱스는 [i-1]이고, b[i-1]은 str이므로 정수로 변환해 인덱스 역순으로 int(b[i-1]) a와 곱해준다.
# 각 곱한 값을 굳이 리스트에 넣어서 더하지 않고, 바로 a와 b를 곱해 출력한다.
for n in range(1, 11, 2): print(n, end=' ') # 1 3 5 7 9 for i in range(10, 0, -2): print(i, end=' ') # 10 8 6 4 2
# 제출했을 때, 방법 1,2,3의 메모리나 시간차이는 없는걸로 보아 내가 이해하기 쉬운 코드로 작성하면 되겠다.
추가내용
# 파이썬의 출력함수인 print는 기본값으로 끝에 \n을 붙여 개행(줄바꿈)을 한다.
# print를 여러번 작성하면 한줄에 하나씩 출력이 되는데, 이를 한줄에 모두 출력하고 싶다면 end = ' '를 사용하면 된다.
# 한줄씩 출력 for n in range(1, 11, 2): print(n) # 1 # 3 # 5 # 7 # 9 # 한줄에 공백을 기준으로 여러개 출력 for n in range(1, 11, 2): print(n, end=' ') # 1 3 5 7 9
for n in range(1, 11, 2): print(n, end=' ') for n in range(10, 0, -2): print(n, end=' ') # 1 3 5 7 9 10 8 6 4 2 # 공백을 기준으로 두 출력문이 합쳐 출력된다.
'Python_알고리즘' 카테고리의 다른 글
[Python] 백준 4673 셀프 넘버 (0) 2021.06.29 [Python] 백준 4344 평균은 넘겠지 (0) 2021.06.29 [Python] 백준 1110 더하기 사이클 (0) 2021.06.26 [Python] 백준 2884 알람시계 (0) 2021.06.25 [Python] 백준 10869 사칙연산 (0) 2021.06.23