Greedy) 곱하기 혹은 더하기

Mongle·2020년 11월 27일
0

곱하기 혹은 더하기

<이것이 취업을 위한 코딩테스트다, 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)

더 간단하게 만들 수 있다.

profile
https://github.com/Jeongseo21

0개의 댓글