728x90
반응형
# 14241
n = str(input())
data = list(map(int, input().split()))

score = 0 
i=0
while i < len(data)-1:
  score = score + data[i]*data[i+1]
  data[i+1] = data[i]+ data[i+1]
  i = i +1 

print(score)
728x90
반응형

'백준 > 그리디' 카테고리의 다른 글

# 10162 전자레인지  (0) 2020.09.02
# 5585 거스름돈  (0) 2020.09.02
# 11399 ATM  (0) 2020.09.02
# 18238 ZOAC 2  (0) 2020.09.01
# 16208 귀찮음  (0) 2020.09.01
728x90
반응형
# 18238
tmp = input()
alpha = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'

cnt = 0 
now = alpha.index('A')

for i in tmp:
  start = alpha.index(i)
  if abs(start-now) > 12 :
    cnt = cnt+ 26 - abs(start-now)
  else:
    cnt = cnt + abs ( start-now )
  now = start

print (cnt) 
728x90
반응형

'백준 > 그리디' 카테고리의 다른 글

# 10162 전자레인지  (0) 2020.09.02
# 5585 거스름돈  (0) 2020.09.02
# 11399 ATM  (0) 2020.09.02
# 14241 슬라임 합치기  (0) 2020.09.02
# 16208 귀찮음  (0) 2020.09.01
728x90
반응형
# 16208 
n = int(input())
a = list(map(int, input().split()))

# 최소 비용이 나오려면? 
# 항상 동일한 비용이 나옴.

cost = 0 
sum = 0 
l = len(a)

for i in a:
  sum = sum + i

for i in range(0, l-1):
  sum = sum - a[i]
  cost = cost + a[i]*sum 

print (cost)
728x90
반응형

'백준 > 그리디' 카테고리의 다른 글

# 10162 전자레인지  (0) 2020.09.02
# 5585 거스름돈  (0) 2020.09.02
# 11399 ATM  (0) 2020.09.02
# 14241 슬라임 합치기  (0) 2020.09.02
# 18238 ZOAC 2  (0) 2020.09.01
728x90
반응형
n, k = map(int, input().split())

cnt = 0 
while n != 1 : 
  if ( n % k == 0 ):
    n = n / k 
  else :
    n = n - 1
  cnt = cnt + 1

print (cnt)

 

+) 더 간결히 다듬기 

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

count = 0 

while n > 1 : 
  count += 1 
  if n % m == 0 : n /= m 
  else : n -= 1

print (count)
728x90
반응형
728x90
반응형
# 가장 높은 숫자가 쓰인 카드 한 장 뽑기 
# 최소 숫자가 가장 큰 행을 선택해서 최소 숫자 출력하기? 
n, m = map(int, input().split())
# 필요한 것 : 행에서 가장 작은 숫자 찾기 / 그 중 가장 큰거 찾기 
min = []

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

tmp = min[0]
for i in min:
  if i > tmp :
    tmp = i

print (i)

 

 

 

+ ) min/ max 함수를 사용하면 더 간단하게 작성 가능

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

 

+ ) min / max 함수 사용 다른 방법

n, m = map(int, input().split() )
data = []
s_data = [] 

for i in range(n):
    data.append ( list(map(int, input().split() )))
    s_data.append ( min(data[i]) )

print( max(s_data) )
728x90
반응형
728x90
반응형
# 큰 수의 법칙 
# N개의 수를 M번 더해서 가장 큰 수 만들기 
# 단, 가장 큰 수는 K 번 이상 더할 수 없음. 

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

data.sort()

# 만약에 M 10 K 3 이면, 
# 6 + 6 + 6 + 5 + 6 + 6 + 6 + 5 + 6 + 6 

tmp = data[n-1]*k + data[n-2]
sum = tmp * int( m/(k+1) ) + data[n-1]*int(m%(k+1))
print(sum)
728x90
반응형

+ Recent posts