Baekjoon11 [BOJ / python] #1700 멀티탭 스케줄링 그리디 import sys n,k=map(int,sys.stdin.readline().split()) x=list(map(int,sys.stdin.readline().split())) multi =[0]*n ans=0 for i in range(k): true=0 for j in range(n): if multi[j]==0 or multi[j]==x[i]: true=1 multi[j]=x[i] break if true: continue else: temp = x[i+1:] late = 0 idx = 0 for j in range(n): if multi[j] in temp: if late 2021. 3. 27. [BOJ / python] #1202 보석 도둑 그리디 import sys import heapq n,k = map(int,sys.stdin.readline().split()) x=[list(map(int,sys.stdin.readline().split())) for i in range(n)] y=[int(sys.stdin.readline()) for i in range(k)] x.sort(key=lambda x: x[0]) y.sort() i=0 j=0 heap=[] ans=0 while i =x[j][0]: heapq.heappush(heap,-x[j][1]) j+=1 else: break i+=1 if heap: // 이 부분 추가 ans+=-heapq.heappop(heap) print(ans) heap을.. 2021. 3. 27. [BOJ / python] #1541 수리공 항승 그리디 import sys n,l = map(int,sys.stdin.readline().split()) x=list(map(int,sys.stdin.readline().split())) x.sort() end = 0 ans = 0 for i in x: if end 2021. 3. 27. [BOJ / python] #1339 단어 수학 그리디 import sys n = int(sys.stdin.readline()) x=[sys.stdin.readline().strip() for i in range(n)] y=[0]*26 for i in x: for j in range(1,len(i)+1): idx = ord(i[j-1])-65 y[idx]+=10**(len(i)-j) y.sort(reverse=True) ans=0 for i in range(1,11): ans+=y[i-1]*(10-i) print(ans) 먼저 아스키코드를 사용해 숫자로 변환한다. 변환하여 각 자릿수에 맞는 값을 알파벳 자리에 넣고 내림차순 정렬한 뒤 앞에서부터 9를 곱해준다. 2021. 3. 27. [BOJ / python] #2217 로프 그리디 import sys n=int(sys.stdin.readline()) x=[int(sys.stdin.readline()) for i in range(n)] x.sort(reverse=True) ans=x[0] for i in range(1,len(x)): if ans 2021. 3. 23. [BOJ / python] #1541 잃어버린 괄호 그리디 import sys n=sys.stdin.readline() n=n.split('-') x=[] for i in n: y=i.split('+') ans=0 for j in y: ans+=int(j) x.append(ans) ans=x[0] for i in range(1,len(x)): ans-=x[i] print(ans) 최솟값을 구하기 위해서 먼저 '-'를 기준으로 스플릿 하여 '+'로 묶일 수 있는 부분을 리스트로 묶은 뒤 다시 '+'를 기준으로 스플릿 하여 더해줌으로써 '-'시 최댓값을 만들어준다. 2021. 3. 23. [BOJ / python] #5585 거스름돈 그리디 import sys n=int(sys.stdin.readline()) n=1000-n x=[500,100,50,10,5,1] ans=0 for i in x: ans+=n//i n=n%i print(ans) 2021. 3. 23. [BOJ / python] #1931 회의실 배정 그리디 import sys n=int(sys.stdin.readline()) x=[list(map(int,sys.stdin.readline().split())) for i in range(n)] x.sort(key=lambda x: [x[1],x[0]]) start=0 end=0 ans=0 for i in x: if end 2021. 3. 23. [BOJ / python] #11047 동전 0 그리디 import sys n,k=map(int,sys.stdin.readline().split()) x = [int(sys.stdin.readline())for i in range(n)] x.sort(reverse=True) answer=0 for i in range(n): if k>=x[i]: answer+=k//x[i] k=k%x[i] print(answer) 내림차순 정렬한 뒤 제할 수 있는 값들을 제하며 동전 리스트를 순회했다. 2021. 3. 23. 이전 1 2 다음