181113_(火) - PassionOfStudy/Algorithm GitHub Wiki

Programmers_(K Order Number)

K번째 수 K Order Number

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 = []
}