[백준] 그리디

huga·2020년 9월 24일
0

코딩테스트

목록 보기
5/8
post-custom-banner

동전 0

row,cost = map(int,input().split())
arr = []
#받아온 값들을 어레이에 넣어준다
#row는 몇번 받아 올건지, cost은 목표금액
for i in range(int(row)):
    arr.append(int(input()))

count= 0

for i in range(len(arr)-1,-1,-1): #높은 가격부터
    if arr[i]>cost :
        continue
    else :
        mok = cost//arr[i] #몫
        cost = cost- mok*arr[i] 
        count += mok

print(count)

회의실 배정

import sys
num = int(sys.stdin.readline())
arr = []
for i in range(num):
    start, end = map(int,sys.stdin.readline().split())
    arr.append((start,end))
#빨리 끝나는 시간대의 회의 먼저, 일찍 시작하는 시간대 먼저
sortedArr = sorted(arr, key= lambda x :(x[1],x[0]))

count = 0 # 회의 개수 
time = 0 #지금 가능한 시작시간
for meeting in sortedArr:
    if meeting[0]>= time :
        time = meeting[1]  #끝나는 시간을 시작시간으로
        count +=1

print(count)

ATM

import sys
people = int(sys.stdin.readline())
minutes = []

minutes = list(map(int,sys.stdin.readline().split()))

# 인출이 적게 걸리는 순서대로 sort
minutes.sort()
#총 걸리는 시간
total =0 
#앞 사람이 걸린 시간
pre = 0
for i in range(people):
    # 앞사람이 걸린 시간+내 인출시간을 총합에 더함
    total += pre + minutes[i]
    # 앞사람 걸린 시간을 내걸로 업뎃
    pre +=minutes[i]

print(total)

잃어버린 괄호

import sys
import re

question = sys.stdin.readline().rstrip()
#+-를 기준으로 나눠줌 숫자만 들어간 리스트
#56-85+2651-525 이면 [56,85,2651,525]
numbers = list(map(int,re.split('[+|-]',question)))

#+-만 들어간 리스트,,,앞뒤에 공백 들어가길래 빼줌
#56-85+2651-525 이면 [-,+,-]
plusminus = re.split('[0-9]+',question)
del plusminus[0]
del plusminus[len(plusminus)-1]

#우선 첫번째는 무조건 더하기니까
answer = numbers[0]
#-를 만나면 true
flag = False
#두번째 수부터 반복문 돌리며 더하기 빼기를 판단
for i in range(1, len(numbers)):
    # 앞에 -가 있으면 빼기, 그리고 pre를 -로 업뎃
    if plusminus[i-1]=='-' :
        answer -=numbers[i]
        flag = True
    # 앞에 + 가 붙어 있는 경우     
    else:
        #flag 가 flase 즉'-'인경우 -(58+3) 이 가능하므로 빼줌 
        if flag:
            answer -=numbers[i]
        else:    
            answer +=numbers[i]

print(answer)

이문제는 다른 사람들의 풀이를 찾아보니 굉장히 짧았다.

arr = input().split('-')
s = 0
for i in arr[0].split('+'):
    s += int(i)
for i in arr[1:]:
    for j in i.split('+'):
        s -= int(j)
print(s)
post-custom-banner

0개의 댓글