TIL/알고리즘 공부

백준 1181번 Swift 알고리즘 연습

여의도사노비 2022. 9. 13. 00:46
728x90

N개의 문자열을 입력받고 각 문자열의 길이, 알파벳 우선순위에 따라 출력하는 문제이다.

중복을 피해야한다는 것도 신경써야한다!

 

 

이 문제를 풀면서 생각한 논리적 흐름은

  1. N개의 string을 입력받는다.
  2. 중복을 피하기 위해 array가 아닌 set을 사용하여 string을 저장한다.
  3. 첫 번째로 string별 길이가 같은지 확인하고 같다면 각 string의 알파벳 우선순위가 높은 원소를 기준으로 sorting한다.
  4. string별 길이가 다르다면 길이가 짧은 원소를 기준으로 오름차순으로 sorting한다.

 

 

* 1181번

let N = Int(readLine()!)!
var sets: Set<String> = []

for _ in 1...N {
    let words = readLine()!
    sets.insert(words)
}

var setsSorted = sets.sorted(by: {$0.count == $1.count ? $1 > $0 : $0.count < $1.count})

for i in setsSorted {
    print(i)
}

 

 

정리(Today I Learned)

  1. string이 갖는 우선순위는 항상 헷갈린다. 예를들면 im보다 it가 단순비교 했을 경우 값이 더 크다. 이는 t가 m보다 더 뒤에 나오는 알파벳이기 때문에 값으로 환산했을 경우 더 크게 나타나는 것이다. 알파벳을 값으로 환산한다는 생각을 항상 할 것!