문제
https://www.acmicpc.net/problem/2588
세 자리수의 곱셈에 대한 문제로, 순서대로 출력값이
- 일의 자리
- 십의 자리
- 백의 자리
- 전체 결과값
이 나오게 된다. 즉 123*456을 입력하면(물론 숫자 두 개로 입력받는다)
- 123 * 4
- 123 * 5
- 123 * 6
- 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 |