<로직 고민/>
- 음...슬라이싱을 쓰고 싶군
- 그러면 문자열로 바꿔서...정렬하고 answer에 k에 해당하는 값 붙이기...!
def solution(array, commands):
answer = []
for command in commands:
i = command[0] - 1
j = command[1]
k = command[2] - 1
str_array = "".join(str(s) for s in array)
sorted_array = sorted(str_array[i:j])
answer.append(sorted_array[k])
return answer
- 일단 슬라이싱까진 했는데 .sort()가 안 돼서 sorted로 하니 고맙게로 리스트로 다시 변환해줬다
- 그래서 바로 k번째에 해당하는 값을 붙였는데 답이 ['5', '6', '3'] 이렇게 나와서 ㅋㅋㅋ틀렸다
- 리스트 속 문자열은 map함수를 쓰면 된다..!
return list(map(int, answer))
- 리턴값을 이렇게 바꿔주니 예제는 통과했다..!!!
- 근데 ...채점하니까 테스트 2개에서 실패가 뜬다 뭐가 문제일까..ㅠ
- 뭐가 문제인지는 모르겠으나 리스트도 슬라이싱이 된다는 첩보를 받고 join, list, map 다 빼고 했더니 테스트 통과한다..!!
- 아니 왜 안 된다고 생각했지...? print라도 찍어볼걸 ㅋㅋㅋ
<완성된 코드/>
def solution(array, commands):
answer = []
for command in commands:
sorted_array = sorted(array[command[0] - 1 : command[1]])
answer.append(sorted_array[command[2] - 1])
return answer
<다른 사람 풀이/>
- 천재풀이1
def solution(array, commands):
return list(map(lambda x:sorted(array[x[0]-1:x[1]])[x[2]-1], commands))
- 다 아는 건데도 모르겠다 ㅋㅋㅋ
- 어떻게 이런 생각을....ㅠㅠ
- 천재풀이2
def solution(array, commands):
answer = []
for command in commands:
i, j, k = command
answer.append((sorted(array[i - 1 : j]))[k - 1])
return answer
- 아 변수 저렇게 담는 거 가능하지...대박스...
- 멋지다...
<수정/>
- 다른 사람 풀이 보고 1줄 줄여봤다 ㅎㅎ...
def solution(array, commands):
answer = []
for command in commands:
answer.append(sorted(array[command[0] - 1 : command[1]])[command[2] - 1])
return answer
- 속도는 원래 풀이가 쫌 더 빠를 듯