[ 백준 문제 2588 / 파이썬 ] 곱셈

2023. 2. 5. 12:57백준/파이썬

 

2588번: 곱셈

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

www.acmicpc.net

나의 정답:

 

방법 1)

num1 = int(input())
num2 = list(map(int, list(input())))
print(num1 * num2[2])
print(num1 * num2[1])
print(num1 * num2[0])
print(num1 * (num2[2] + num2[1]*10 + num2[0]*100) )
472
385
2360
3776
1416
181720
num1 = int(input())

우선 num1을 정수형 타입으로 입력 받았습니다

 
num2 = list(map(int, list(input())))

num2는 일의 자리, 십의 자리, 백의 자리로 분리해서 곱해줘야하니까,

list로 입력값을 받아줬습니다.

 

=> 그럼 세자리 자연수를 입력받자마자 [ '1' , '2' , '3' ] 이런식으로 문자열 리스트가 되죠.

 

이 리스트 속의 원소들을 각각 int 형으로 변환 해주고 싶어요.

 

map()을 사용해줍니다.

 

그리고 이 map으로 바꾼 것을 다시 list화 시킵니다.

 

=> 그럼 [ 1, 2, 3 ] 이렇게 원소가 정수형인 list로 만들어집니다.

 

print(num1 * num2[2])
print(num1 * num2[1])
print(num1 * num2[0])

리스트 순서를 이용해서 이렇게 출력해줍니다.

 

print(num1 * (num2[2] + num2[1]*10 + num2[0]*100) )

 

방법 2)

num1 = int(input())
num2 = input()

print(num1 * int(num2[2]))
print(num1 * int(num2[1]))
print(num1 * int(num2[0]))

print(num1 * int(num2))
472
385
2360
3776
1416
181720

 

좀더 쉽게 풀어보겠습니다.

생각해보니 num2 변수를 너무 복잡한 코드로 짠 것 같습니다.

 

애초에 num2 값을 문자열로 받는다면 어떨까요?

list가 필요가 없어집니다!

 

문자열 개념이 확실히 없어서 굳이 굳이 list를 썼던 것 같습니다.

 

그렇죠. 문자열도 list처럼 시퀀스 입니다!

순서를 이용해줄 수 있습니다.

 

num1 = int(input())
num2 = input()

이렇게 num2값을 int형 변환 없이 바로 문자열로 입력 받겠습니다.

 

print(num1 * int(num2[2]))
print(num1 * int(num2[1]))
print(num1 * int(num2[0]))

문자열 그 자체로 순서를 이용한 연산을 해줄 수 있습니다.

 

단 정수인 num1 과 연산을 해주어야 하니 int 형 변환을 해줍니다.

 

코드가 훨씬 간단해집니다! :)