Greedy) 곱하기 혹은 더하기
곱하기 혹은 더하기
<이것이 취업을 위한 코딩테스트다, 312p, 나동빈, 한빛미디어>
☝첫번째 접근
문자열을 int형 리스트로 변환한 후에
0, 1일 때는 더하기를 해야하고
그 외의 숫자일 때는 곱하기를 해야 최대값이 나온다.
s = "00030" #사용자는 문자열로 입력
# s를 int형 리스트로 변환
s = [int(x) for x in s]
result = 0
for num in s:
# 처음에 result가 0일 때 num으로 초기화
if result == 0:
result += num
# num이 0이나 1일 때에는 더하기
elif num == 0 or num == 1:
result += num
# 그 외의 수는 곱하기
else:
result *= num
print(result)
✍피드백
"1234"를 입력할 경우
답은 1+2*3*4 = 36이지만, 결과를 출력해보면 24가 나온다.
즉, result가 1인 경우에 더하기를 해줘야하는데 그 부분을 놓쳤다.
s = "1234" #사용자는 문자열로 입력
# s를 int형 리스트로 변환
s = [int(x) for x in s]
result = 0
for num in s:
# 처음에 result가 0일 때 num으로 초기화
if result <= 1:
result += num
# num이 0이나 1일 때에는 더하기
elif num <= 1:
result += num
# 그 외의 수는 곱하기
else:
result *= num
print(result)
이렇게 고쳐야한다.
if 문을 하나로 합치면
s = "1234" #사용자는 문자열로 입력
# s를 int형 리스트로 변환
s = [int(x) for x in s]
result = 0
for num in s:
# 더하기를 해야하는 조건
if result <= 1 or num <= 1:
result += num
# 곱하기를 해야하는 조건
else:
result *= num
print(result)
더 간단하게 만들 수 있다.
Author And Source
이 문제에 관하여(Greedy) 곱하기 혹은 더하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@mongle/Greedy-곱하기-혹은-더하기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)