1주차
Closed this issue · 4 comments
plzprayme commented
질문을 올려주세요.
debuffmaster commented
이건 코듭니다.
def fastmult2(m,n):
ans = 0
while n > 0:
if n % 2==0:
return fastmult2((m*n)//(n/2),n//2)
else:
return m + fastmult2(m, n-1)
n, ans = n-1, ans
return ans
이건 실행값과 결과입니다.
print( fastmult2(3,0))
print( fastmult2(3,1))
print( fastmult2(3,2))
print( fastmult2(3,5))
0
3
6.0
15.0
해당 결과에서 0 3 6 15 이렇게 소수점을 없애고 싶습니다 어떤 조건을 추가해야 합니까?
plzprayme commented
안녕하세요. 질문 자세하게 잘 적어주셨네요.
혹시 문제를 해결하기 위해서 어떤 것을 시도해보셨는지 알 수 있을까요?
지금은 나눗셈을 하는 과정에서 정수형 변수가 실수형 변수로 변하는 파이썬의 나눗셈 특성 때문에 원하는 결과를 얻지 못한 것 같습니다.
혹시 파이썬 정수로 나누기, 파이썬 소수점 없애기 등 검색을 통해서 해결해볼 수 있을까요?
sinbak commented
#리스트를 이용한 과제 1번 코드
def solution(n):
answer = 0
n = list(str(n))
for i in n:
answer += int(i)
return answer
print(solution(987)) #24
print(solution(123)) #6
ShangBinLee commented
과제 1번 코드
저는 처음에 이렇게 풀었습니다.
def solution(n):
answer = 0
digit = 10
remainder = 0
isEnd = False
while isEnd == False:
remainder = n % digit
answer += remainder // (digit // 10)
if n // digit == 0:
isEnd = True
digit *= 10
return answer
ex)
n = 123
remainder = 123 % 10 (== 3)
answer += remainder(3) // (digit(10) // 10) (== 3(3 // 1))
digit = 10 * 10
remainder = 123 % 100 (== 23)
answer += remainder(23) // (digit(100) // 10) (== 3 + 2(23 // 10))
digit = 100 * 10
remainder = 123 % 1000 (== 123)
answer += remainder(123) // (digit(1000) // 10) (== 3 + 2 + 1(123 // 100))
(n // digit == 0) == True(123 // 1000 == 0)
isEnd = True
return answer