첫 번째 답안
: 답은 맞췄지만 알아보기 어렵고 지저분하다. 그리고 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를 의식적으로 써 보는 연습을 해야겠다.
'코딩 기록장' 카테고리의 다른 글
python 3 : 프로그래머스 Level. 1 가운데 글자 가져오기 (0) | 2020.11.06 |
---|---|
python 3 : 프로그래머스 Level. 1 3진법 뒤집기 (0) | 2020.11.06 |
python 3 : 프로그래머스 Level. 1 2016년 (0) | 2020.11.06 |
python 3 : 프로그래머스 Level. 1 체육복 (0) | 2020.11.06 |
python 3 : 프로그래머스 Level. 1 모의고사 (0) | 2020.11.05 |