각 자리 숫자(0~9)로 이루어진 문자열 S가 주어졌을 때, 왼쪽부터 오른쪽으로 하나씩 모든 숫자를 확인하며 숫자 사이에 'x' 혹은 '+' 연산자를 넣어 결과적으로 만들어질 수 있는 가장 큰 수를 구하는 프로그램을 작성하자

 

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)  (0) 2021.09.28
공부(1)  (0) 2021.09.27

1이 될 때까지

 

n이 1이 될 때까지

 

n에서 1을 빼거나 n에서 k로 나누거나 둘 중 하나를 반복적으로 선택하여 수행

 

n, k = map(int, input().split())

result = 0

while True:
    target = (n//k) * k
    result += (n - target)
    n = target

    if n < k:
        break
    result += 1
    n //= k

result += (n-1)
print(result)

'알고리즘 > 알고리즘' 카테고리의 다른 글

공부(3)  (0) 2021.09.29
공부(1)  (0) 2021.09.27

그리디 알고리즘

 

거스름돈 문제

 

동전은 500원 100원 50원 10원으로 거슬러 줄 수 있다

 

이 때 거슬러 주어야 할 동전의 최소 개수는?

 

가장 큰 화폐 단위부터 돈을 거슬러 주면 된다

 

n = int(input())
count = 0

array = [500, 100, 50, 10]

for coin in array:
    count += n // coin
    n %= coin

print(count)

 

 

'알고리즘 > 알고리즘' 카테고리의 다른 글

공부(3)  (0) 2021.09.29
공부(2)  (0) 2021.09.28

+ Recent posts