2588 답:
a = int(input())
b = int(input())
b_list = []
def seperate(number):
# 1의자리 ~ 높은 자리수 리스트 만들기
while (number != 0):
b_list.append(number % 10)
number = number//10
return b_list
seperate(b)
print(b_list[0] * a, b_list[1] * a, b_list[2] * a, a * b, sep='\n')
문제 분석 및 해석
"""
세자리 자연수 2개를 각각 a b라고 부를때,
(1) a, b를 각각 1, 2 줄에 입력값을 받는다
(2) b를 각각의 자리수로 나누어야 곱할 수 있으니 나누어서 각 줄에 적어준다.
3 b의 1자리수와 a를 곱한 값
4 b의 10자리수와 a를 곱한 값
5 b의 100자리수와 a를 곱한 값
6 b와 a를 곱한 값
a b를 입력받았을 때
(3) 3, 4, 5, 6 순서대로 출력되는 프로그램을 작성한다
"""
과정
(1) 일단 자연수 a * b의 최종값이 잘 출력되는지 확인
input을 받을때 미리 int로 바꾸어 주었다.
a = int(input())
b = int(input())
print(a * b)
값을 지정해서 출력때마다 편하게 작업해보려고 했는데 자꾸 해당 오류가 뜬다..ㅋㅋ
왜이러는거야..
a = 472
b = 385
a = int(input(a))
b = int(input(b))
# 6
print(a * b)
472 #자동으로 값이 넣어지고 있음
Traceback (most recent call last):
File "/Users/diane073/Desktop/realnewprac/backjoonyoong.py", line 28, in <module>
a = int(input(a))
ValueError: invalid literal for int() with base 10: ''
(2) 10으로 나누어서 자릿수 분리하기
**리스트에 작은 자리부터 순서대로 담김
a_list = []
while(number!=0): #number(자릿수)가 없을때까지 돌려라
a_list.append(number%10) #10으로 나눈 나머지를 넣기, 1의 자리수 숫자를 위한 코드.
x = x//10 # 10으로 나누었을때의 몫을 구해라, 10의 자리수 이상을 다시 1자리수로 넣어주기
return b_list 를 넣어서 리스트[자연수b]를 반환해준다.
- 풀이과정 중 실수한 것
b_list.append(number % 10) 에서 오류
TypeError: unsupported operand type(s) for %: 'list' and 'int'
print(seperate(b_list)) 를 했으니...ㅜㅜ
네가 만든 seperate는 number=자연수b를 넣고 돌려야하는 함수란다
= 어디에 어떤 걸 넣어야 하는지 늘 생각하자..
seperate(b) #자연수 를 나누고
print(b_list) # b_list가 잘 나오는지 출력
#결과 : [5, 8, 3] good!
(3)각 줄에 출력값 적기
각각 적어도 되지만,
print(b_list[0] * a) #3 b의 1자리수와 a를 곱한 값
print(b_list[1] * a) #4 b의 10자리수와 a를 곱한 값
print(b_list[2] * a) #5 b의 100자리수와 a를 곱한 값
print(a * b) # 6 a x b
어제 했던 한줄에 출력값 적기 활용해보자
print(b_list[0] * a, b_list[1] * a, b_list[2] * a, a * b, sep='\n')
이렇게해도 잘 나오지만 자동화할겸 연습겸 for문으로 작성해보자
> 새로운 리스트 만들어 값 출력하기
ab_list = []
for num in b_list:
num = num * a
ab_list.append(num)
print(*ab_list, a * b, sep='\n')
> b_list에 대체해서 넣어보기
list요소를 대체하려면 list요소 자체를 대체하거나, 지우고 넣을 수 있을 것 같다.
대체하거나 지우기.. pop도 쓸 수 있을까?
단, remove()는 for문 사용시 0 1 2 차례로 도니까
0을 지우고 0자리로 밀려온 (구)1은 두고, 1 자리로 밀려온 (구)2를 지울 수 있으니 제외한다.
list 요소 대체 방법은
a_list[0] = 'e'
리스트 각 index에 직접 대체하고자하는 값을 지정해준다.
for idx, num in enumerate(b_list):
num = num * a
b_list[idx] = num
#print(b_list) 여기서 잘 들어갔는지도 한번씩 확인해보기
print(*b_list, a * b, sep='\n')
결과출력 굿굿 for문 활용도 꾸준히 연습하자!
느낀점:
꼼꼼히 하나하나 공부하려다보니 자꾸 시간이 많이 걸린다.
10시반에 시작한거 같은데 벌써 12시가 넘은 걸 보니..
시간이 남을때마다 더 많이 풀고 속도를 올릴 수 있도록 해야겠다
아직은 느리니까 9시 전에 시작하든, 전날에 미리 분석하고 자든 해야될듯.
'알고리즘 풀이' 카테고리의 다른 글
[algorithm] 프로그래머스: 최빈값 구하기 (0) | 2023.04.05 |
---|---|
[algorithm] 프로그래머스: 몫 구하기 (0) | 2023.04.04 |
[algorithm] 백준: 10430 나머지 (0) | 2023.04.02 |
[algorithm] 백준: 10926 ??!, 18108 불기연도 계산 (1) | 2023.03.30 |
[algorithm] 백준 : 10869 사칙연산 풀이 (0) | 2023.03.29 |