Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions 이티유진/11279_최대 힙.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import sys
import heapq

n = int(sys.stdin.readline())
heap = []

# -1을 곱해 최소 힙으로 최대 힙 구현
for i in range (n):
x = int(sys.stdin.readline())
if x == 0: # x가 0일 때
if heap: # 배열에서 가장 큰 값 출력하고 그 값을 배열에서 삭제
print((-1)*heapq.heappop(heap))
else: # 배열이 비어있을 경우 0 출력
print(0)
elif x > 0: # x가 자연수일 때
heapq.heappush(heap,(-1)*x) # 배열에 x라는 값 추가
45 changes: 45 additions & 0 deletions 이티유진/11650_좌표 정렬하기.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
import sys

n = int(sys.stdin.readline()) #n 입력

arr = [list(map(int,input().split())) for i in range(n)] #2차원 평면 위의 점 n개 입력 [[3,4],[1,1]]

#병합정렬_merge
def merge(left, right):
i, j = 0, 0
sorted_list = []
while(i < len(left)) and (j < len(right)):
if left[i] < right[j]:
sorted_list.append(left[i])
i += 1
else:
sorted_list.append(right[j])
j += 1
if i == len(left):
while j < len(right):
sorted_list.append(right[j])
j += 1
elif j == len(right):
while i < len(left):
sorted_list.append(left[i])
i += 1
return sorted_list

#병합정렬_merge sort
def merge_sort(arr):
if len(arr) <= 1:
return arr
#분할하고 분할된 리스트 각각 정렬
mid = len(arr) // 2
left = merge_sort(arr[:mid])
right = merge_sort(arr[mid:])
#병합
return merge(left,right)

#정렬
arr = merge_sort(arr)
#좌표 출력
for x, y in arr:
print(x,y)


22 changes: 22 additions & 0 deletions 이티유진/1431_시리얼 번호.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import sys

n = int(sys.stdin.readline()) #기타 개수 n 입력
s = [input() for i in range(n)] #시리얼 번호 n개 입력

#정렬 2_자릿수 합
def sum(x):
r = 0
for i in x:
if i.isdigit(): #isdigit(): 문자열이 숫자인지 판별
r += int (i)
return r

#정렬_ 1.길이 2.자릿수 합 3.사전순
s.sort(key = lambda x: (len(x), sum(x), x))

#정렬된 리스트 s의 모든 요소 출력
for i in s:
print(i)



19 changes: 19 additions & 0 deletions 이티유진/1966_프린터 큐.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import sys
from collections import deque

t = int(sys.stdin.readline()) #테스트 케이스 수 t

for i in range(t):
n, m = map(int,input().split())
queue = deque(list(map(int,input().split()))) #문서 중요도 queue
index_queue = deque(list(range(n))) #인덱스 idx_queue
cnt = 0 #인쇄 순서 cnt
while queue:
if queue[0] == max(queue): #queue의 첫번째 원소가 최댓값인 경우(가장 앞에 있는 문서의 중요도가 가장 클 경우) pop
cnt += 1 #pop할 때마다 cnt 1씩 증가
queue.popleft()
if index_queue.popleft() == m: #pop한 문서의 인덱스가 m과 같다면 cnt 출력
print(cnt)
else:
queue.append(queue.popleft()) #queue의 첫번째 원소가 최댓값 아닌 경우 맨 뒤로 재배치
index_queue.append(index_queue.popleft())