괴발개발 성장기

Study/Go 언어

[golang] sort 함수 사용하여 정렬하기

지니유 2022. 4. 22. 23:31
반응형

# 배경

프로그래머스 하다가 정렬 간단히 하는 방법을 찾다가 알게 되었다.

 

# 숫자 오름차순 하는 방법

sort.Ints(배열)

예시

var nums = []int{3,5,6,1,0,66}

fmt.Println("정렬하기 전 :", nums)
sort.Ints(nums)
fmt.Println("정렬하기 후 :", nums)

결과

정렬하기 전 : [3 5 6 1 0 66]
정렬하기 후 : [0 1 3 5 6 66]

# 문자열 오름차순 하는 방법

sort.Strings(문자열배열)

예시

	var str = []string{"안녕", "지니", "감기", "조심", "꽃"}
	fmt.Println("정렬하기 전 :", str)
	sort.Strings(str)
	fmt.Println("정렬하기 후 :", str)

결과

정렬하기 전 : [안녕 지니 감기 조심 꽃]
정렬하기 후 : [감기 꽃 안녕 조심 지니]

# 숫자 내림차순 하는 방법

sort.Sort(sort.Reverse(sort.IntSlice(배열)))

예시

	var nums2 = []int{3, 5, 6, 1, 0, 66}
	fmt.Println("정렬하기 전 :", nums2)
	sort.Sort(sort.Reverse(sort.IntSlice(nums2)))
	fmt.Println("정렬하기 후 :", nums2)

결과

정렬하기 전 : [3 5 6 1 0 66]
정렬하기 후 : [66 6 5 3 1 0]

# 문자열 내림차순

sort.Sort(sort.Reverse(sort.StringSlice(문자열배열)))

예시

	var str = []string{"안녕", "지니", "감기", "조심", "꽃"}
	fmt.Println("정렬하기 전 :", str)
	sort.Sort(sort.Reverse(sort.StringSlice(str)))
	fmt.Println("정렬하기 후 :", str)

결과

정렬하기 전 : [안녕 지니 감기 조심 꽃]
정렬하기 후 : [지니 조심 안녕 꽃 감기]

# 오름차순으로 정렬이 되어 있는 확인 하는 방법

sort.IntsAreSorted(배열)

예시&결과

var nums3 = []int{3, 5, 6, 1, 0, 66}
boolean := sort.IntsAreSorted(nums3) 
fmt.Println("결과값 :", boolean) //결과값 : false

var nums7 = []int{1,3,4,6,9}
boolean = sort.IntsAreSorted(nums7) 
fmt.Println("결과값 :", boolean) 결과값 : true

# 배열 자리 교체 하는 방법

	sort.IntSlice(배열).Swap(바꿀인덱스, 바꿀인덱스)

예시

	var nums4 = []int{5, 8, 9, 6, 2, 1}
	fmt.Println("정렬하기 전 :", nums4)
	sort.IntSlice(nums4).Swap(1, 2)
	fmt.Println("정렬하기 후 :", nums4)

결과

정렬하기 전 : [5 8 9 6 2 1]
정렬하기 후 : [5 9 8 6 2 1]
  • num4[1]인 8과 num4[2]인 9가 자리가 바꼈음을 알 수 있다.

# 값을 비교해서 boolean 값을 알려주는 함수

sort.IntSlice(배열).Less(비교할인덱스, 비교할인덱스)

예시

var nums4 = []int{5, 8, 9, 6, 2, 1}
boolean = sort.IntSlice(nums4).Less(3, 4) // x[i] < x[j] 값을 알려주는 것
fmt.Println("결과값 :", boolean) //결과값 : false
  • num4[3]인 6과 num4[4]인 2을 비교 했을 때 6이 더 큼으로 false이다. (num4[3] < num4[4] 거짓)

 

# GitHub

https://github.com/YooGenie/go-study/issues/35

 

sort 공부하기 · Issue #35 · YooGenie/go-study

 

github.com

 

 

 

 

반응형