목록문제/백준_파이썬 (155)
sm 기술 블로그
import sys input = sys.stdin.readline N = input() result = 0 Nplus = N.replace("-"," ") tmp1 = list(Nplus.split()) for i in range(len(tmp1)): if (tmp1[i].find("+") != -1): tmp2 = tmp1[i].replace("+"," ") plusList = list(map(int, tmp2.split())) tmp1[i] = str(sum(plusList)) tmp1 = list(map(int, tmp1)) if len(tmp1) > 1: result = tmp1[0] del tmp1[0] for val in tmp1: result -= val else: result = tmp1..
import sys input = sys.stdin.readline N = int(input()) P = sorted(list(map(int, input().split()))) tmp = 0 for i in range(N): tmp += P[i] P[i] = tmp print(sum(P)) 문제요약 N명의 사람이 ATM에서 돈을 뽑을 때 가장 적게 드는 방법은? 설명 각 사람이 P시간이 걸린다. 시간을 오름차순으로 정렬하면 필요한 시간의 합의 최소값을 구할 수 있다. P = sorted(list(map(int, input().split()))) 따라서 먼저 받은 값을 오름차순으로 정렬한다. for i in range(N): tmp += P[i] P[i] = tmp 누적합을 저장해준다. print(sum(..
import sys input = sys.stdin.readline N = int(input()) timeList = [list(map(int, input().split())) for _ in range(N)] # 시작시간, 끝시간 timeList2 = [] timeList.sort(key=lambda x: (x[1], x[0])) for val in timeList: timeList2.append(val) endMin = timeList[0][1] cnt = 1 del timeList[0] del timeList2[0] #처음에 시작과 종료시간이 같은 회의가 들어갈 수 있음 for val in timeList: if val[0] < endMin: timeList2.remove(val) else: end..
import sys input = sys.stdin.readline N,K = map(int,input().split()) coinList = sorted([int(input()) for _ in range(N)], reverse = True) cnt = 0 for val in coinList: if K == 0: break cnt += K//val K %= val print(cnt) 문제요약 주어진 동전 리스트를 최소로 사용하여 가치에 맞게 만드시오 설명 그리디 알고리즘의 대표 문제이다. 그리디 알고리즘에 대해서는 아래를 참고하자 https://smhope.tistory.com/384 [알고리즘 | 자료구조] 그리디 알고리즘(Greedy Algorithm) 그리디 알고리즘(Greedy Algorithm..