본문 바로가기
파이썬(Python)/파이썬 : Baekjoon

[백준] 파이썬(Python) : 곱셈 (2588번)

by TODAYCODE 2021. 7. 22.
반응형

백준 단계별로 풀어보기 1단계 입출력과 사칙연산 11번 문제

 

2588번: 곱셈

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

www.acmicpc.net

 

문제의 핵심

1. 문자열에서 특정 위치를 가져올 수 있는가?

 

 

 

드디어 내가 좋아하는 형태의 문제이다.

문법을 아는지 묻는게 아니라

이런 생각을 할 수 있는지를 묻는 문제.

 

1단계지만 마지막 문제라서 그런지 이런 형태의 문제가 있는 것 같다.

물론, 1단계라 굉장히 쉽다.

 

 

그러나 처음 해보는 사람 입장에서는 필요한 문법을 전부 알고 있더라도

어떻게 풀지 방향을 못 잡을 수 있다.

곰곰히 고민해보자. 풀 수 있다.

 


훨씬 더 간단하게 푸는 방법들이 존재하겠지만

일단은 for문 같은 것은 사용하지 않고

현재까지 진행된 입출력과 사칙연산으로만 풀어보도록 하겠다.

 

 

문제를 살펴보면 일반적인 곱셈 방식으로 진행된다.

입력된 첫번째 숫자를,

두번째로 입력한 숫자의 1의자리, 10의자리, 100의자리에 각각 곱한뒤에 위치에 맞게 더하는 것.

따라서, 우리는 두번째 입력된 숫자의 1의자리, 10의자리, 100의자리를 가져와야한다.

 

입력을 받을때,

a = input()

b = input()

이런 형태로 입력 받으므로, 숫자가 아닌 문자열로 입력받은 상태이다.

 

이럴때, b 뒤에 [숫자]를 적는 것으로 몇번째 문자에 접근할 것인지를 명령할 수 있다.

모든 코딩언어가 그렇듯 숫자 0부터 시작한다.

b[0] - 첫번째 글자

b[1] - 두번째 글자

b[2] - 세번째 글자

 

이런식이다.

눈치가 빠르다면 벌써 풀이법이 생각났을 것이다.

각각의 글자를 뽑아오고 이를 int형태로 바꾼뒤에 곱하면 된다.

 

 

 

파이썬 팁.

앞에서부터 시작하면 0으로 시작하지만,

뒤에서부터 시작할땐 -1로 시작한다.

맨 뒤에 문자열에 접근하고 싶다면 b[-1]로 가능하다.

맨 뒤에서 2번째는 b[-2]이다.

 

 

정답 코드

a = input()
b = input()

# 1의자리 곱셈 계산
print(int(a)*int(b[-1])) # b[2]로 바꿔도 된다.

# 10의자리 곱셈 계산
print(int(a)*int(b[-2])) # b[1]로 바꿔도 된다.

# 100의자리 곱셈 계산
print(int(a)*int(b[-3])) # b[0]로 바꿔도 된다.

# 일반적인 곱셈 계산
print(int(a)*int(b))

백준 단계별로 풀어보기 1단계를 모두 클리어했다 !

반응형

댓글