이제 Go에 대한 기초적인 지식을 습득했으니까 실전에 적용해 볼 시간이다.
그러기 위해선 가장 쉬운 방법이 문제를 푸는 것이다.
이때까지 배운 지식들로 풀 수 있을만한 문제를 백준에서 찾았다.
백준 1015번 문제인 수열 정렬이다.
수열이 주어지고 이 수열이 정렬되었을 때 각 숫자의 인덱스 위치를 출력하면 되는 문제다.
package main
import "fmt"
func main() {
var n int
fmt.Scan(&n)
var a []Node
for i := 0; i < n; i++ {
var x int
fmt.Scan(&x)
a = append(a, Node{x, 0})
}
for i := 0; i < n; i++ {
index := 0
for j := 0; j < n; j++ {
if (i != j && a[i].data > a[j].data) ||
(i > j && a[i].data == a[j].data) {
index++
}
}
a[i].index = index
}
for i := 0; i < n; i++ {
fmt.Printf("%d ", a[i].index)
}
}
type Node struct {
data int
index int
}
나는 이렇게 풀었다.
알고리즘이 좋은지는 모르겠고 일단 풀었다는 거에 의의를 둬야겠다.
Go가 익숙해지면 되게 빠른 언어 같긴한데 아직 어려운 것 같다.