문제
(세 자리 수) × (세 자리 수)는 다음과 같은 과정을 통하여 이루어진다.
(1)과 (2)위치에 들어갈 세 자리 자연수가 주어질 때 (3), (4), (5), (6)위치에 들어갈 값을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 (1)의 위치에 들어갈 세 자리 자연수가, 둘째 줄에 (2)의 위치에 들어갈 세자리 자연수가 주어진다.
출력
첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다.
코드 풀이
풀이 방법 (1)
print문에서 %을 이용해 바로 출력하는 풀이
# 풀이방법 1
# print문에 %(나머지)를 이용해 바로 출력하는 방법
n1 = int(input()) # 입력받는 첫 번째 숫자
n2 = int(input()) # 입력받는 두 번째 숫자
# (3) 출력
print(n1 * (n2 % 10))
# (4) 출력
print(n1 * ((n2 % 100) // 10))
# (5) 출력
print(n1 * (n2 // 100))
# (6) 출력
print(n1 * n2) # 답 도출
- 두 숫자를 int형으로 입력받기
- n2를 10으로 나눈 나머지를 n1와 곱해서 (3)을 출력
- n2를 100으로 나눈 나머지를 10으로 나눈 몫을 n1와 곱해서 (4)을 출력
- n2를 100으로 나눈 몫을 n1와 곱해서 (5)을 출력
- (6) = 결과값 = 최종 곱셈 값 = n1과 n2를 곱한 값 = n1 * n2
풀이 방법 (2)
결과값을 list에 담고 활용하는 풀이
# 풀이방법 2
# 결과값을 list 변수에 담고, 출력하는 방법
n1 = int(input())
n2 = list(map(int, input()))
result = []
for i in range(len(n2), 0, -1): # for문 이용
result.append(n1 * n2[i - 1])
print(result[0], result[1], result[2], sep="\n")
print(result[0] + (result[1] * 10) + result[2] * 100)
- n1은 int형으로 입력받고, n2는 list형으로 입력받기 (리스트안에 원소들은 int형)
- 빈 리스트 result를 생성
- for 루프에서 n2 리스트의 각 요소를 거꾸로 탐색. (즉, range() 함수를 사용하여n2 리스트의 마지막 항목부터 첫 번째 항목까지 반복)
- 각 반복에서 result 리스트에 n1과 n2의 해당 인덱스 값의 곱을 추가
- n2의 인덱스를 역순으로 접근하므로, i 값은 n2 리스트의 인덱스와 같지 않음. 따라서 n2[i - 1]은 n2 리스트에서 현재 반복하는 항목을 나타낸다!
- 리스트의 각 요소를 일의 자리, 십의 자리, 백의 자리로 변환하여 이를 합하여 출력
✔️ range() 메소드 매개변수에 숫자를 3개 넣는 경우
range(A, B, C)
A부터 C 숫자만큼의 간격으로 B-1 까지의 정수 범위를 반환
B까지가 아닌 B-1 이라는 것에 주의!!
예시)
>>> a = range(1, 10, 2)
>>> print (list(a))
[1, 3, 5, 7, 9]
반응형
'Programming Language > Python3.6' 카테고리의 다른 글
[python 파이썬] 백준 10430번 코드 풀이 (0) | 2024.05.09 |
---|---|
[python 파이썬] 백준 18108번 코드 풀이 (0) | 2024.05.09 |
[python 파이썬] 백준 10926번 코드 풀이 (0) | 2024.05.08 |
[python 파이썬] 백준 10869번 코드 풀이 (0) | 2024.05.08 |
[python 파이썬] 백준 1008문제 코드 풀이 (0) | 2024.05.08 |