https://www.acmicpc.net/problem/2588
백준 2588번 문제는 두 세자리수 정수의 곱을 구하는 문제입니다.
초등학생 때 배웠던 세자리수의 곱셈의 풀이과정에 발생하는 숫자들이 출력하게 하는 코드를 짜면 됩니다.
1. 문자열을 이용한 풀이(반복문X)
<코드>
A = int(input())
B = input()
print(A*int(B[2]))
print(A*int(B[1]))
print(A*int(B[0]))
print(A*int(B))
(1) (2)
문자열 입력 함수 input()으로 A와 B에 저장할 정수값을 (문자열로) 입력받아
A만 정수형으로 변환해주었고 B는 문자열 형태로 남겨두었습니다.
문자열은 문자열을 구성하는 문자에 접근할 수 있습니다.
따라서 세자리 곱셈의 중간과정에서
B의 각 자리수를 곱하여 더하는 과정을 표현할 수 있습니다.
(3) (4) (5)
따라서 int(B[2])는 세자리 정수 B의 일의 자리 숫자,
int(B[1])는 세자리 정수 B의 십의 자리 숫자,
int(B[0])은 세자리 정수 B의 백의 자리 숫자가 됩니다.
(6)
최종 결과값입니다.
2. 문자열을 이용한 풀이(반복문O)
<코드>
A = int(input())
B = input()
for i in range(3, 0, -1) :
print(A * int(B[i - 1]))
print(A * int(B))
위 과정을 for 반복문으로 나타낼 수 있습니다.
1. 문자열을 이용한 풀이(반복문X)의 (3) (4) (5)번째 줄 코드를 반복문으로 바꾸면 됩니다.
range를 (2, -1, -1)로 하고 (4)번째 줄 코드의 int(B[i - 1])를 int(B[i])로 바꿔도 좋습니다.
while 반복문을 사용하는 것도 좋아요.
3. 산술 연산자를 이용한 풀이
A = int(input())
B = int(input())
print(A * (B % 10))
print(A * (B % 100 // 10))
print(A * (B // 100))
print(A * B)
매번 int로 형 변환을 해주기 귀찮다면,
산술 연산자(%와 //)를 사용하는 것도 좋은 방법입니다.
(1) (2)
A와 B를 각각 int(input())으로 입력받습니다(정수)
(3)
B가 385라 하면,
B % 10은 385를 10으로 나눈 나머지, 즉 5입니다.
셋째자리 5가 계산됩니다.
(4)
B % 100 // 10은
B % 100 값에 다시 // 10을 해주겠다는 의미입니다.
B = 385를 100으로 나눈 나머지는 85이고,
85를 다시 10으로 나눈 몫은 8이 계산됩니다.
따라서 둘째자리 8이 계산됩니다.
(5)
B // 100은 385를 100으로 나눈 몫, 즉 3입니다.
따라서 첫째자리 3이 계산됩니다.
코린이 대학생의 풀이였습니다.
풀이에 오류가 있거나 빈약한 부분이 있다면 얼마든지 댓글을 남겨주시기 바랍니다.
https://like-a-happy-cat.tistory.com/
https://blog.naver.com/snake6862
'프로그래밍 > 백준' 카테고리의 다른 글
[파이썬(Python)] 백준 2163번 초콜릿 자르기 (0) | 2021.10.07 |
---|---|
[파이썬(Python)] 백준 3046번 R2 : 평균을 활용한 추론 (0) | 2021.10.07 |
[파이썬(Python)] 백준 2558번 A+B - 2 : 두 정수의 합 구하기 - 2 (0) | 2021.10.07 |
[파이썬(Python)] 백준 10430번 나머지 : 나머지 연산자 % 사용하기 (0) | 2021.10.07 |
[파이썬(Python)] 백준 10869번 사칙연산 (0) | 2021.10.07 |