문제

https://www.acmicpc.net/problem/2588

 

2588번: 곱셈

첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다.

www.acmicpc.net

세 자리수의 곱셈에 대한 문제로, 순서대로 출력값이

  1. 일의 자리
  2. 십의 자리
  3. 백의 자리
  4. 전체 결과값

이 나오게 된다. 즉 123*456을 입력하면(물론 숫자 두 개로 입력받는다)

  1. 123 * 4
  2. 123 * 5
  3. 123 * 6
  4. 123 * 456

이렇게 네 가지로 출력하는 구조.

 

풀이

a=int(input())
b=input()
print(a*int(b[-1]))
print(a*int(b[-2]))
print(a*int(b[0]))
print(a*int(b))

어? 에디터 블록 켰더니 코드블록이 되네…? 무튼.

세자리수로 고정되어 있기 때문에 음수로 인덱싱해서 출력했다. input으로 입력받는 건 문자열이기때문에 int로 안 바꿔주면 결과값을 보자마자 여러분은 마른세수를 하게 된다. 문자열이 그냥 쭉 반복돼서 나오거든…

 

응용

-For문

a=int(input())
b=input()
for i in range(1,len(b)+1):
    print(a*int(b[len(b)-i]))
print(a*int(b))

반복문은 기본적으로 음수 인덱싱을 이용하지 않고, 별찍기때처럼 범위나 값에 변화를 줘서 진행할 예정이다. For문의 범위는 len(b)에서 뺄 값이기 때문에 1부터 숫자 자릿수+1로 잡았다. python의 range는 range(3)이면 길이는 3이지만 값이 0, 1, 2로 시작하기 때문.

 

-While문

a=int(input())
b=input()
i=len(b)
while i >= 1:
    print(a*int(b[i-1]))
    i=i-1
print(a*int(b))
a=int(input())
b=input()
i=len(b)
while i >= 1:
    i=i-1
    print(a*int(b[i]))
print(a*int(b))

둘 다 While이다.

for문과 while문은 같은 반복문이지만 맥락이 다르다. for문은 범위 안에서 반복하는 반복문이고, while은 특정 조건을 만족하기 전까지 반복하는 반복문. 그래서 돌아가는 용도에 따라 최적화된 반복문이 다르다.

'BOJ > [BOJ] Python' 카테고리의 다른 글

백준 8393번 풀이  (0) 2022.08.18
백준 10950번 풀이  (0) 2022.08.18
백준 14681번 풀이  (0) 2022.08.18
백준 2753번 풀이  (0) 2022.08.18
백준 2884번 풀이  (0) 2022.08.18

Profile

Lv. 34 라이츄

요즘 날씨 솔직히 에바참치김치꽁치갈치넙치삼치날치기름치준치학꽁치임..