1. 문제 설명
2. 문제 해결 아이디어
- 대부분의 경우 '+'보다는 'x'가 값을 크게 만든다.
- 다만 두 수중에서 하나라도 0, 1일경우 곱하기 보다는 더하기를 수행하는 것이 효율적이다.
- 즉, 하나라도 1 이하인 경우에는 더하며 두 수가 모두 2이상인 경우에는 곱해야한다.
3. 답안
- 각각 분리해서 계산해야 하므로 문자열로 받는 것이 좋겠다.
- 앞뒤를 비교해서 앞뒤합이 4이하일 경우 더한다.
- 맨 앞 인덱스의 수를 잡고 계속 연산해나간다.
data = input()
result = int(data[0])
for i in range(len(data) - 1):
if(int(data[i]) + int(data[i+1]) <= 4):
result += int(data[i+1])
else:
result *= int(data[i+1])
print(result)
3-1 표준답안
data = input()
#첫 번째 문자를 숫자로 변경하여 대입
result = int(data[0])
for i in range(1, len(data)):
num = int(data[i])
if num <= 1 or result <= 1:
result += num
else:
result *= num
print(result)
음.. 2번째 연산부터는 result가 1보다 작을 수가 있나..?
'CodingTest > 그리디 알고리즘' 카테고리의 다른 글
모험가 길드 (0) | 2022.07.05 |
---|---|
1이 될 때까지 반복적으로 수행 (0) | 2022.07.05 |
그리디 알고리즘 이론 (0) | 2022.07.04 |