지난포스트 (deprecated)/Algorithm & Data Structure (deprecated)

python - 정렬 (★☆☆☆☆)

.log('FE') 2018. 10. 29. 07:38
728x90
반응형

문제

 

 

배열 array의 i 번째 숫자부터 j 번째 숫자까지 자르고 정렬했을때, k번째에 있는 수 구하기

array = [1, 5, 2, 6, 3, 7, 4]
commands = [[2, 5, 3], [4, 4, 1], [1, 7, 3]]
- 2번째부터 5번째 숫자까지 자르고 정렬했을때 3번째 자리수
- 4번쨰부터 4번째 숫자까지 자르고 정렬 1번째 수
- 1번째부터 7번째까지 자르고 정렬 후 3번째 수

def solution(array, commands):
      answer = []
      return answer


풀이

 

 

def
solution(info, commands):
answer = []
for i in range(len(commands)):
test = info[commands[i][0] -1:commands[i][1]]
test.sort()
answer.append(test[commands[i][2] - 1])
return answer


info = [1, 5, 2, 6, 3, 7, 4]
commands = [[2, 5, 3], [4, 4, 1], [1, 7, 3]]


print(solution(info, commands))

 


1. 최종결과를 담아줄 answer  = [] 빈배열을 만든다.

2. 반복문으로 commands 매개변수의 갯수만큼 돌리면서 내부 코드를 실행한다.

3. 각각의 결를 answer에 담아서 출력한다.

 

 

개선한 풀이

 

 

def
solution(info, commands):
answer = []
for i, j, k in commands:
answer.append(sorted(info[i - 1: j])[k-1])
return answer


info = [1, 5, 2, 6, 3, 7, 4]
commands = [[2, 5, 3], [4, 4, 1], [1, 7, 3]]


print(solution(info, commands))

 

 



첫번째 풀이는 의식의 흐름대로 작성한 코드이고

개선한 풀이는 조금더 코드의 양을 줄이려고 노력해본 코드이다.

 

파이썬에서는 for문을 만들때 변수를 여러개 지정할수 있고 그걸 활용하여 코드의 양을 줄였다.

별도의 변수를 따로 생성할 필요없이 for문 내에서도 한줄로 끝났다.

 

의식의 흐름대로 작성한 코드와 이를 개선한 코드로의 수정작업을 계속 진행하려고 한다.

 

 

code-reading 블로그에 방문해 주셔서 환영합니다.
댓글은 모두 환영하니 많이 달아주세요.

 

728x90
반응형