181113_(火) - PassionOfStudy/Algorithm GitHub Wiki
Programmers_(K Order Number)
K Order Number
K번째 수My Solution
전체적인 로직 이중 for문을 이용했다. 먼저 commands라는 Int형 이차원 배열의 요소에 접근하여 값을 꺼내는 것 부터 시작한다. for문의 인덱스에 접근하여 1차원 배열에 접근하고 각각의 배열의 요소의 값 또한 인덱스로 접근하여 i부터 j까지 for문을 돌면서 append()
메서드를 이용하여 result라는 비어있는 Int형 배열에 추가했다. result배열을 sorted(by:)
를 이용해서 오름차순으로 정렬하고, 마지막 k인덱스의 값을 Int형 배열 ans에 append()
로 추가하고 마지막에 값을 return하였다.
Other Solution
일단 풀이를 봤을 때 한 눈에 로직을 알아볼 수 있게 가독성을 높인 코드를 Best로 선택했다. 그리고 계속해서 for문을 이용할 때 습관적으로 익숙한 index에 접근하는 방법을 사용하는데 그러지말고 for command in commands { }
와 같은 형식의 방법을 사용하도록 해야겠다.
%
풀면서 느낀점은 악취나는 코드를 작성했다는 것이다. for문을 돌면서 commands[inner][0]-1, command[inner][1]-1...
같은 부분은 다른 사람도 알아볼 수 있도록 변수명을 지어 가독성을 높이도록 바꿔야한다.
for i in 0..<command.count {
var (first, last, order) = (command[i][0]-1, command[i][1]-1, command[i][2]-1)
for index in first...last {
result.append(arr[index])
}
ans.append(result.sorted(by: <)[order])
result = []
}