https://youtu.be/2zjoKjt97vQ?si=fGChNeo644FV1sFd
<문제> 곱하기 또는 더하기
문제 설명
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
'Programming > Algorithm' 카테고리의 다른 글
[그리디 알고리즘] - 문제: 모험가 길드 (0) | 2024.02.05 |
---|---|
대기업 코딩테스트 준비 (0) | 2024.02.01 |
그리디 알고리즘 개요 (0) | 2024.01.30 |
[그리디알고리즘] 문제 - 1이 될 때까지 (0) | 2024.01.30 |
[그리디 알고리즘] 문제 - 거스름돈 (0) | 2024.01.30 |