[ 백준 문제 2588 / 파이썬 ] 곱셈
2023. 2. 5. 12:57ㆍ백준/파이썬
나의 정답:
방법 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 형 변환을 해줍니다.
코드가 훨씬 간단해집니다! :)
'백준 > 파이썬' 카테고리의 다른 글
[ 백준 문제 9498 / 파이썬 ] 시험 성적 (0) | 2023.02.05 |
---|---|
[ 백준 문제 1330 / 파이썬 ] 두 수 비교하기 (0) | 2023.02.05 |
[ 백준 문제 3003 / 파이썬 ] 킹, 퀸, 룩, 비숍, 나이트, 폰 (0) | 2023.02.05 |
[ 백준 문제 10926 / 파이썬 ] ??! (0) | 2023.02.05 |
[ 백준 문제 1000 / 파이썬 ] 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. (4) | 2023.02.05 |