728x90
반응형

www.acmicpc.net/problem/1715

 

1715번: 카드 정렬하기

정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장

www.acmicpc.net

import heapq
import sys 
input = sys.stdin.readline 

n = int(input())
data = [] 
for i in range(n) : data.append(int(input()))
heapq.heapify(data)
result = 0 

while data:
  first = heapq.heappop(data)

  if len(data)<=0:   # 원소가 1개 이하일 때 
    break 
  
  second = heapq.heappop(data)
  heapq.heappush(data, first+second )
  result += first + second 

for i in data : 
  result += i 

print(result)

 

처음 더한 값들이 반복되어 더해지므로, 가장 작은 값부터 더해야한다. 

우선순위 큐를 이용해서 작은 값을 꺼낸다. 

728x90
반응형

'백준 > 구현' 카테고리의 다른 글

# 1476번 : 날짜  (0) 2020.10.15
# 2309번 : 일곱 난쟁이  (0) 2020.10.15
# 18406: 럭키 스트레이트  (0) 2020.10.07
728x90
반응형
# (1 ≤ E ≤ 15, 1 ≤ S ≤ 28, 1 ≤ M ≤ 19) 

year = list(map(int,input().split()))

for result in range(1,7981):
  if result % 15 == year[0] or ( result%15 == 0 and year[0] == 15 ) :
    if result % 28 == year[1] or (result%28 == 0 and year[1] == 28 ) :
      if result % 19 == year[2] or ( result%19 == 0 and year[2] == 19) :
        print(result)

 

문제에 보면 주어진 시간이 2초로 긴 편이다. 

완전 탐색으로 접근해서 풀어도 무방하다. 

 

주의! 15/28/19 로 나누어 떨어지면 나머지는 0 이지만 표현되는 수는 15 임을 조심! 

728x90
반응형

'백준 > 구현' 카테고리의 다른 글

# 1715 카드 정렬하기  (0) 2021.04.10
# 2309번 : 일곱 난쟁이  (0) 2020.10.15
# 18406: 럭키 스트레이트  (0) 2020.10.07
728x90
반응형
# 난쟁이 키 합이 100 
from itertools import combinations 

height = [] 
for i in range(9):
  height.append(int(input()))

height.sort() 

combi = list(combinations(height,7))

for i in combi : 
  h_sum = 0 
  for k in range(7):
    h_sum += i[k]
  
  if h_sum == 100 : 
    result = i 
    break 

for k in range(7):
  print(result[k])

 

조합 ( combination ) 모듈을 통해 완전 탐색으로 풀이한다. 

조합의 결과는 튜플로 나옴에 유의한다. 

 

from itertools import combinations 

combi = list( combinations( 조합을 사용할 list , 조합할 단위 )) 

 

+ ) 순열은 순서가 의미 있는 조합이며, permutations 로 사용한다. 

728x90
반응형

'백준 > 구현' 카테고리의 다른 글

# 1715 카드 정렬하기  (0) 2021.04.10
# 1476번 : 날짜  (0) 2020.10.15
# 18406: 럭키 스트레이트  (0) 2020.10.07
728x90
반응형
n = list(map(int,input()))
left, right = 0, 0

for i in range( len(n)//2 ):
  left += n[i]
  right += n[ len(n)-i-1 ]

if left == right :
  print("LUCKY")
else:
  print("READY")
728x90
반응형

'백준 > 구현' 카테고리의 다른 글

# 1715 카드 정렬하기  (0) 2021.04.10
# 1476번 : 날짜  (0) 2020.10.15
# 2309번 : 일곱 난쟁이  (0) 2020.10.15

+ Recent posts