본문 바로가기
Coding Test/Go

[프로그래머스] K번째수 Go Code

by giem 2022. 8. 16.
반응형

2022.08.16 - [Coding Test/Python] - [프로그래머스] K번째수 - Python Code

2022.08.16 - [Coding Test/C++] - [프로그래머스] K번째수 C++ Code

 

저번 파이썬, C++ 포스트에 이어서

이번에는 Go로 풀어보겠다.


문제


구현

Go 언어는 slice기능을 가지고 있다.

 

하지만 Go의 sort는 파라미터로 넘긴 것을 반환하지는 않기 때문에

따로 저장을 한 후 sort를 해야 해당 인덱스에 접근이 가능하다.

 

그 후 sort된 배열의 인덱스를 정답에 추가해주면 된다.

 

코드로 살펴보겠다.


코드
import "sort"

func solution(array []int, commands [][]int) []int {
    var answer []int
    for _, cmd := range commands {
        slice := append([]int{}, array[cmd[0]-1:cmd[1]]...)
        sort.Ints(slice)
        answer = append(answer, slice[cmd[2]-1])
    }
    return answer
}

여기서 slice에 append 할 때... 은 몇 개일지 정해지지 않았을 때 주로 사용하는 것이다.

 

append의 정의를 보면 다음과 같다.

func append(s []T, vs ...T) []T

뒤에 올 파라미터의 사이즈에 상관 없이 기능이 동작하게 된다.


다른 풀이

이렇게 append를 사용하지 않고 싶다면

copy()를 사용해서 잘라도 될 것 같다.

 

하지만 copy 후 다시 slicing을 해야 되기 때문에

시간 비용이 약간 추가될것이라 생각한다.

 

다음은 마지막으로 JS로 풀어보겠다.

반응형

댓글