새소식

Programming/Algorithm

[그리디 알고리즘] 문제 - 곱하기 또는 더하기

  • -

https://youtu.be/2zjoKjt97vQ?si=fGChNeo644FV1sFd

<문제> 곱하기 또는 더하기
문제 설명

출처: 동빈나 Youtube

n = input()
list = [int(char) for char in n]
number = 1
cnt = 0

# 1. 0이 없을 때
# 2. 처음에 0이 있을 때
# 3. 중간에 0이 있을 때
# 4. 마지막에 0이 있을 때

for num in list: 
    # print(num)
    cnt += 1
    if num == 0:
        pass
    elif num == 1:
        number += num
    else: 
        number *= num

print(number)
해결 아이디어
  • 대부분의 경우 +보다는 *가 더 값을 크게 만듦
  • 다만 두 수 중에서 하나라고 0이거나 1인 경우, 곱하기 보다는 더하기를 수행하는 것이 효율적임
  • 두 수에 대해서 연산을 수행할 때, 두 수 중에서 하나라도 1 이하인 경우에는 더하며, 두 수가 모두 2이상인 경우에는 곱하면 정답임
풀이
#%%
data = input()

# 첫 번째 문자를 숫자로 변경하여 대입
result = int(data[0])

for i in range(1, len(data)):
    # 두 수 중에서 하나라도 1이거나 0인 경우에 곱하기 보다는 더하기 수행
    num = int(data[i])
    if num <= 1 or result <= 1:
        result += num
    else:
        result *= num
print(num)
#%% md
* 왜 에러가 나는지는 잘 모르겠지만,, 어쨌든 다른 파이썬 파일을 확인해보니 잘 돌아간다. 
* 첫 번째 문자를 숫자로 변경하여 첫 문자로 설정하고
* 범위 내에 1이나 0이 있는 경우 혹은 첫 번째 수가 1이거나 0인 경우에 더하기
* 아닌 경우에 대해서 곱하기를 수행한다.

https://github.com/Park-Minjoo/CODINGINTERVIEW_PRACTICE/tree/main/Algorithms

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.