업데이트:

❓ 문제


문제

문제

✏ 나의 풀이 - 오답


1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 입력 받은 문자열을 정수로 바꿔 배열에 저장
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 이상인 경우에는 곱하면 된다.

✔️ 파이썬 답안 예시


1
2
3
4
5
6
7
8
9
10
11
12
13
14
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인 경우에도 덧셈을 수행해야 된다는 점을 생각하지 못한게 아쉽다.

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

댓글남기기