[210121 TIL] Programmers Algorithm(Heap, Sort)

602go·2021년 1월 22일
0

Algorithm

목록 보기
2/6
post-thumbnail

Today I Learned

written by 602



Programmers) Heap 03. 이중우선순위큐 (lv.3)

https://programmers.co.kr/learn/courses/30/lessons/42628

def solution(operations):
    answer = [] # 빈 큐 생성
    for o in operations:
        # I(append)
        if o.split()[0] == "I":
            answer.append(int(o.split()[1]))
        # D(remove)
        else:
            if len(answer) == 0:
                continue #예외처리(큐가 비어있는 경우)
            if o.split()[1] == "1":
                answer.remove(max(answer)) #최댓값
            else:
                answer.remove(min(answer)) #최솟값
    
    if len(answer) == 0:
        return [0,0]
    else:
        return [max(answer),min(answer)]

Heap(힙) 구현 안한 버전이라 스터디에서 힙(heap)에 대해 배우고 다시 풀어볼 예정!



Programmers) 정렬 01. K번째수 (lv.1)

https://programmers.co.kr/learn/courses/30/lessons/42748

def solution(array, commands):
    answer = []
    for c in commands:
        i, j, k = c[0], c[1], c[2] #문제처럼 i,j,k 지정
        new = sorted(array[(i-1):j]) #배열 자르기(인덱싱) 후 정렬
        answer.append(new[k-1]) #k번째 수 append
    return answer

어렵지 않아서 바로 넘어갔는데, 다른 사람의 풀이 중 엄청난 코드를 보게 되었다..!

def solution(array, commands):
    return list(map(lambda x:sorted(array[x[0]-1:x[1]])[x[2]-1], commands))

중간에 변수를 지정하지 않고 한번에 쓰는건 오케이였는데, lambda를 활용한 점이 놀라웠다. 알고 있음에도 실제 문제 풀이에서 떠올리기란 쉽지 않은 일인데 대단하심!!

0개의 댓글