첫 번째 답안

: 답은 맞췄지만 알아보기 어렵고 지저분하다. 그리고 start, end, k에 x[0], x[1], x[2]라고 값을 직접 입력한 것도 불필요하다. 리스트가 길어질수록 입력받는 변수 목록을 하나하나 작성하는 것도 오래 걸릴 거다.

def solution(array, commands):
    n = len(commands)
    start = [x[0] - 1 for x in commands]
    end = [x[1] for x in commands]
    k = [x[2] - 1 for x in commands]
    answer = []

    for idx in range(n):
        answer.append(array[start[idx]:end[idx]]) # 슬라이스
        answer[idx] = sorted(answer[idx])[k[idx]] # k번째 숫자 찾기

    return answer

두 번째 답안

: 다른 사람들의 답안을 보고 변수 값을 한 줄로 받는 것을 참고했다. 훨씬 깔끔하다. 그리고 인덱스 번호를 쓸 때는 안에 쓰는 숫자를 띄어서 쓰지 말아야 한다는 것도 알았다. 띄어서 쓰면 더 알아보기 힘들다. 

def solution(array, commands):
    answer = []
    
    for command in commands:
        start, end, k = command
        li = array[start-1:end]      # slice
        li.sort()                    # sort
        answer.append(li[k-1])       # find k
        
    return answer

 

배울 점

: 다른 사람의 답안 중에 list와 map, lambda를 써서 한 줄로 해결한 것도 있었는데 대단하다는 생각은 들었지만 읽기가 너무 어려웠다. 그래서 내 최종 답안은 숏 코딩이 아니라 읽기 쉬운 것으로 정했다. 그래도 list와 map, lambda를 의식적으로 써 보는 연습을 해야겠다.

 

+ Recent posts