본문 바로가기

Programming Language/Python3.6

[python 파이썬] 백준 2588번 코드 풀이

문제

(세 자리 수) × (세 자리 수)는 다음과 같은 과정을 통하여 이루어진다.

(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 리스트에 n1n2의 해당 인덱스 값의 곱을 추가
  • 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]

 

반응형