BOJ/Go

[Go] BOJ / 1181번 / 단어 정렬

d체리b 2023. 4. 12. 11:16

💻 문제

 

1181번: 단어 정렬

첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.

www.acmicpc.net

 

📜 풀이

package main

import (
	"bufio"
	"fmt"
	"os"
	"sort"
)

func main() {
	var n int

	r := bufio.NewReader(os.Stdin)
	w := bufio.NewWriter(os.Stdout)

	defer w.Flush()

	fmt.Fscanln(r, &n)
	var s []string = make([]string, n)

	for i := 0; i < n; i++ {
		fmt.Fscanln(r, &s[i])
	}

	sort.Slice(s, func(i, j int) bool {
		if len(s[i]) < len(s[j]) {
			return true
		} else if len(s[i]) == len(s[j]) {
			return s[i] < s[j]
		} else {
			return false
		}
	})

	for i := range s {
		if i > 0 && s[i-1] == s[i] {   //똑같은 값이 입력될 때 출력시키기 위함
			continue
		}
		fmt.Fprintln(w, s[i])
	}
}

 

728x90