코딩테스트 공부/백준_그리디 알고리즘 (7) 썸네일형 리스트형 [백준 1748 파이썬] 구현 유형이다. # 1748 n=input() length=len(n) sum=0 if length==1: print(int(n)) else: for i in range(1,length): sum += i*(9*10**(i-1)) sum += length*(int(n)-(10**i)+1) print(sum) [백준 11866 파이썬] 구현 유형이다 문제는 어렵지 않았지만 print하는데 어려움이 있었다 ㅎ 원소가 문자로만 이루어진 리스트 (ex. list= ['3', '4'] )의 원소를 한 줄로 출력하고 싶을 때: 즉 3,4 로 출력하고 싶을 때 다음과 같이 쓰면 된다. '원소 사이 나누는 문자'.join(리스트) n,k = map(int,input().split()) a=list(range(1,n+1)) period=k result=[] for i in range(len(a)): while k >len(a) : k=k-len(a) result.append(str(a.pop(k-1))) k=k+period-1 print('',sep='') [백준 1051 파이썬] 처음에 내가 푼 방법 : import sys n,m = map(int,sys.stdin.readline().split()) data=[input() for _ in range(n)] result =[1] for k in range(1,min(n,m)): for i in range(n): for j in range(m): if i+k [백준 11279 파이썬] 최대힙을 구현하는 문제이다. 파이썬의 heapq를 import해서 구현했다. 최소힙을 구현하는 방식과 같지만 heapq.heappush를 할 때 -부호를 붙혀주고 출력할 때도 -를 붙혀주면 된다. 시간 초과가 뜬다면 input() 대신 sys를 import 하고 sys.stdin.readline() 를 쓰면된다. import heapq n=int(input()) data=[int(input()) for _ in range(n)] max_heap=[] for value in data: if value ==0 : if max_heap==[] : print(0) else: print(-(heapq.heappop(max_heap))) else : heapq.heappush(max_heap,-value) [백준 1927 파이썬] 최소힙을 구현하는 문제이다. 파이썬의 heapq를 import해서 구현했다. 시간 초과가 뜬다면 input() 대신 sys를 import 하고 sys.stdin.readline() 를 쓰면된다. #1927 import heapq min_heap=[] n=int(input()) data=[int(input()) for _ in range(n)] min_heap=[] for value in data: if value ==0 : if min_heap==[] : print(0) else: print(heapq.heappop(min_heap)) else : heapq.heappush(min_heap,value) [백준 11000 파이썬] 우선 순위 큐를 이용하는 문제이다. list로 구현을 하게 되면 시간초과가 된다. 따라서 파이썬에서 heap 모듈을 import해서 구현했다. #11000 n=int(input()) data=[list(map(int,input().split())) for _ in range(n)] data.sort() room=[] room.append(data[0][1]) ''' 이렇게 하면 시간초과 for i in range(1,len(data)): print(room) if data[i][0] [백준 1715 파이썬] 1. data중에서 가장 작은 값 2개를 뽑아서 연산을 해주고 2. 그 결과를 다시 data에 넣어준다. 1,2번 방법을 반복하는데 data의 갯수가 1개일 때 결과를 반환하면 된다. iterable한 data에서 계속해서 가장 작은 값을 뽑아야함으로 우선 순위 큐(Priority queue) 자료구조를 이용해서 풀어야한다. 우선 순위 자료 구조를 구현하기 위해선 파이썬의 heapq 모듈을 이용할 수 있다. import heapq n=int(input()) data=[int(input()) for _ in range(n)] heapq.heapify(data) result =0 while len(data) >1 : min = heapq.heappop(data) min_2 = heapq.heappop(dat.. 이전 1 다음