logo태영이의 공부방

[파이썬 알고리즘] 곱하기 혹은 더하기 문제 풀이

2022년 07월 02일

❓ 문제

✏ 나의 풀이 - 오답

# 입력 받은 문자열을 정수로 바꿔 배열에 저장
s = [int(x) for x in input()]
result = 0
 
for n in s:
    # n이 0 또는 1 이거나, result가 0인 경우 덧셈 수행
    # 0 * n 은 항상 0이기 때문이다.
    if result == 0 or n < 2:
        result += n
    # 나머지 경우 곱셈 수행
    else:
        result *= n
 
print(result)

💡 문제 해결 아이디어

대부분의 경우 덧셈보다는 곱셈이 값을 크게 만든다.

다만 두 수 중에서 하나라도 ‘0’ 혹은 *‘1’*인 경우 덧셈을 수행하는 것이 효율적이다.

따라서 두 수에 대하여 연산을 수행할 때, 두 수 중에서 하나라도 1 이하인 경우에는 더하며, 두 수가 모두 2 이상인 경우에는 곱하면 된다.

✔️ 파이썬 답안 예시

data = input()
 
# 첫 번째 문자를 숫자로 변경하여 대입
result = int(data[0])
 
for i in range(1, len(data)):
		# 두 수 중에서 하나라도 '0' 혹은 '1'인 경우, 곱하기보다는 더하기 수행
		num = int(data[i])
		if num <= 1 or result <= 1:
				result += num
		else:
				result *= num
 
print(result)

💬 풀이 평가

result가 1인 경우에도 덧셈을 수행해야 된다는 점을 생각하지 못한게 아쉽다.

이 게시물은 한빛미디어의 이것이 코딩 테스트다 영상과 교재를 참고하였습니다.