Algorithm/programmers/정렬/level1/K번째 수 (with python)
📖문제
📝풀이과정
- commands에 있는 i, j, k 를 뽑아낸다.
- 배열 array의 i번째부터 j번째까지 잘라서 새로운 배열을 만든다.
- 2번에서 만든 새로운 배열을 정렬한다.
- 새로운 배열의 k번째 수를 정답 리스트에 넣는다.
⌨코드
def solution(array, commands):
answer = list()
for ijk in commands:
# 1. commands에 있는 i, j, k 를 뽑아낸다.
i = ijk[0] - 1
j = ijk[1]
k = ijk[2] - 1
# 2. 배열 array의 i번째부터 j번째까지 잘라서 새로운 배열을 만든다.
new_arr = array[i:j]
# 3. 2번에서 만든 새로운 배열을 정렬한다.
new_arr.sort()
# 4. 새로운 배열의 k번째 수를 정답 리스트에 넣는다.
answer.append(new_arr[k])
return answer
💡새로 알게된 문법
for문에서 2차원 리스트에 있는 값들을 한꺼번에 꺼내고 싶다면
- 위 문제에서 commands에 있는 i, j, k 를 뽑아낼 때
- 첫번째 방법
for command in commands:
i, j, k = command
i == command[0], j == command[1], k == command[2] 이렇게 값이 들어간다.
- 두번째 방법 - 더 간결한 방법!
for i,j,k in commands:
💡 코드 좀 더 간단하게 작성하기
- 풀이과정 2번, 3번, 4번을 한 줄의 코드로 작성할 수 있다!
- 줄이기 전!
# 2. 배열 array의 i번째부터 j번째까지 잘라서 새로운 배열을 만든다.
new_arr = array[i:j]
# 3. 2번에서 만든 새로운 배열을 정렬한다.
new_arr.sort()
# 4. 새로운 배열의 k번째 수를 정답 리스트에 넣는다.
answer.append(new_arr[k])
- 줄인 후
answer.append(list(sorted(array[i:j]))[k])
def solution(array, commands):
answer = list()
for ijk in commands:
# 1. commands에 있는 i, j, k 를 뽑아낸다.
i = ijk[0] - 1
j = ijk[1]
k = ijk[2] - 1
# 2. 배열 array의 i번째부터 j번째까지 잘라서 새로운 배열을 만든다.
new_arr = array[i:j]
# 3. 2번에서 만든 새로운 배열을 정렬한다.
new_arr.sort()
# 4. 새로운 배열의 k번째 수를 정답 리스트에 넣는다.
answer.append(new_arr[k])
return answer
💡새로 알게된 문법
for문에서 2차원 리스트에 있는 값들을 한꺼번에 꺼내고 싶다면
- 위 문제에서 commands에 있는 i, j, k 를 뽑아낼 때
- 첫번째 방법
for command in commands:
i, j, k = command
i == command[0], j == command[1], k == command[2] 이렇게 값이 들어간다.
- 두번째 방법 - 더 간결한 방법!
for i,j,k in commands:
💡 코드 좀 더 간단하게 작성하기
- 풀이과정 2번, 3번, 4번을 한 줄의 코드로 작성할 수 있다!
- 줄이기 전!
# 2. 배열 array의 i번째부터 j번째까지 잘라서 새로운 배열을 만든다.
new_arr = array[i:j]
# 3. 2번에서 만든 새로운 배열을 정렬한다.
new_arr.sort()
# 4. 새로운 배열의 k번째 수를 정답 리스트에 넣는다.
answer.append(new_arr[k])
- 줄인 후
answer.append(list(sorted(array[i:j]))[k])
for문에서 2차원 리스트에 있는 값들을 한꺼번에 꺼내고 싶다면
- 위 문제에서 commands에 있는 i, j, k 를 뽑아낼 때
- 첫번째 방법
for command in commands:
i, j, k = command
i == command[0], j == command[1], k == command[2] 이렇게 값이 들어간다.
- 두번째 방법 - 더 간결한 방법!
for i,j,k in commands:
- 풀이과정 2번, 3번, 4번을 한 줄의 코드로 작성할 수 있다!
- 줄이기 전!
# 2. 배열 array의 i번째부터 j번째까지 잘라서 새로운 배열을 만든다.
new_arr = array[i:j]
# 3. 2번에서 만든 새로운 배열을 정렬한다.
new_arr.sort()
# 4. 새로운 배열의 k번째 수를 정답 리스트에 넣는다.
answer.append(new_arr[k])
- 줄인 후
answer.append(list(sorted(array[i:j]))[k])
새로운 변수에 할당을 해줄 필요도 없고 코드도 더 깔끔해진다~!
Author And Source
이 문제에 관하여(Algorithm/programmers/정렬/level1/K번째 수 (with python)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yellowsummer/Algorithmprogrammerssortlevel1K번째-수저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)