[8/22] 이코테 정렬

이경준·2021년 8월 22일
0

코테

목록 보기
85/140
post-custom-banner

<23> 국영수

359 (실버4) 문제

내 코드

n = int(input())
arr = []
for _ in range(n):
    arr.append(list(input().split()))

arr.sort(key = lambda x:(-int(x[1]), int(x[2]), -int(x[3]), x[0]) )

for k in arr:
    print(k[0])

로직

  • 람다 써서 정렬

<24> 안테나

360 (실버3) 문제 실패

내 코드

n = int(input())
arr = list(map(int, input().split()))
arr.sort()

print(arr[(n-1)//2])

로직

  • 정렬 중간값이 답이라고 한다. 짝수 개일 경우에도 정렬되어 더 앞의 값이 정답

<25> 실패율

361 (레벨1) 문제

내 코드

def solution(n, stages):
    answer = []
    cnt = len(stages)
    
    for i in range(1, n+1):
        
        if (cnt == 0):
            answer.append([0, i])
        else:
            temp = stages.count(i)/cnt
            answer.append([temp, i])
            cnt = cnt - stages.count(i)
        
    answer.sort(key = lambda x:x[0], reverse=True)
    
    arr = []
    for j in range(n):
        arr.append(answer[j][1])
    
    return arr

로직

  1. n 레벨 수만큼 for문을 돌린다.
  2. 실패율 계산하고, 현재 멈춰있는 스테이지의 사용자 수를 cnt에서 빼줌
  • 현재 스테이지의 사용자가 없으면 실패율을 0으로 저장
  1. 람다 사용해서 정렬

<26> 카드 정렬하기

363 (골드4) 문제

내 코드

import heapq

n = int(input())
ssum = 0

arr = []
for _ in range(n):    
    heapq.heappush(arr, int(input()))
    
while (len(arr) > 1):
    one = heapq.heappop(arr)
    two = heapq.heappop(arr)
    temp = one + two
    heapq.heappush(arr, temp)
    ssum = ssum + temp

print(ssum)

로직

힙 자료구조를 사용했다.
1. 최솟값 두개를 리스트에서 꺼내고, 합을 ssum에 더해준다. 그리고 arr에 넣어준다.
2. while문 반복해서 길이가 1이 되면 종료한다.

profile
The Show Must Go On
post-custom-banner

0개의 댓글