Algorithm/개념

그리디알고리즘

vluevy 2021. 7. 10. 17:30
728x90
반응형

그리디 알고리즘

당장 좋은 것-이득인 것 먼저 선택


큰 수의 법칙

n,m,k=map(int,input().split())
data=list(map(int,input().split()))

data.sort()
f=int(data[n-1])
s=int(data[n-2])
result=0

while True:
    for i in range(k):
        if m==0:
            break
        result+=f
        m-=1
    if m==0:
        break
    result+=s
    m-=1

print(result)

횟수 계산해서도 풀이 가능

n,m,k=map(int,input().split())
data=list(map(int,input().split()))

data.sort()
f=int(data[n-1])
s=int(data[n-2])
result=0

count=(m//(k+1))*k
count+=m%(k+1)

result+=count*f
result+=(m-count)*s

print(result)

숫자카드게임

n,m=map(int,input().split())
data=[list(map(int,input().split()))for i in range(n)]
result=min(data[0])
for i in range(1,n):
    if result<min(data[i]):
        result=min(data[i])

print(result)

입력과 동시에 min 찾으면서도 가능

n,m=map(int,input().split())
result=0
for i in range(n):
    data=list(map(int,input().split()))
    min_value=min(data)
    result=max(result,min_value)
print(result)

1이 될 때까지

n,k=map(int,input().split())
count=0
while n!=1:
    if n%k==0:
        n/=k
        count+=1
    else:
        n-=1
        count+=1
print(count)
반응형