[8/22] 이코테 정렬

이경준·2021년 8월 22일
0

코테

목록 보기
85/140

<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

0개의 댓글

관련 채용 정보