CodingTest/그리디 알고리즘

곱하기 혹은 더하기

seongduck 2022. 7. 5. 05:01

1. 문제 설명

 

 

2. 문제 해결 아이디어

  • 대부분의 경우 '+'보다는 'x'가 값을 크게 만든다.
  • 다만 두 수중에서 하나라도 0, 1일경우 곱하기 보다는 더하기를 수행하는 것이 효율적이다.
  • 즉, 하나라도 1 이하인 경우에는 더하며 두 수가 모두 2이상인 경우에는 곱해야한다.

 

3. 답안

  1. 각각 분리해서 계산해야 하므로 문자열로 받는 것이 좋겠다.
  2. 앞뒤를 비교해서 앞뒤합이 4이하일 경우 더한다.
  3. 맨 앞 인덱스의 수를 잡고 계속 연산해나간다.
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