곱하기 혹은 더하기 코드 및 해설 (파이썬)

2021. 8. 16. 15:38algorithm

반응형

출처: 이것이 취업을 위한 코딩 테스트다 with 파이썬, Q 2, p 312

 

0과 1이 포함된 연산은 더하기, 그 외의 숫자들은 모두 곱하기로 처리합니다. 숫자들의 리스트를 deque로 만든 후, 순서대로 숫자를 하나씩 pop합니다. 숫자가 남아있을 때까지 다음을 반복합니다. 이전 혹은 현재 숫자가 0 또는 1이면 이전 숫자와 현재 숫자를 더한 값을 이전 숫자로 설정합니다. 그 외는 이전 숫자와 현재 숫자를 곱한 값을 이전 숫자로 설정합니다. 반복이 끝난 후 이전 숫자를 반환합니다.

 

import sys
from collections import deque

# 0과 1은 더하기, 나머지 수는 곱하기로 처리해야 함
s = [int(num) for num in sys.stdin.readline()]
s = deque(s)
# 첫 번째 숫자 
prev = s.popleft()

while s:
    current = s.popleft()
    # 연산하는 숫자 중 적어도 하나가 0 또는 1이면 더하기 
    if prev < 2 or current < 2:
        prev = prev + current
    # 그외는 모두 곱하기 
    else:
        prev = prev * current

print(prev)
반응형