시간초과 코드

  • 데이터를 입력받을 때마다 해당 값이 존재하는지 확인 후 중복을 없애는 일은 시간초과를 일으킵니다.
var arr:[String] = []
let num = Int(readLine()!)!
for _ in 1...num {
    let tmp = readLine()!
    if !arr.contains(where: { $0 == tmp}) { arr.append(tmp) }
}
arr = arr.sorted(by: { s1, s2 in
    if s1.count == s2.count {
        return s1 < s2
    } else {
        return s1.count < s2.count
    }
})

for i in arr {
    print(i)
}

 

시간초과 해결 코드

  • 그렇기 때문에 시간초과 문제를 해결하기 위해서는 Set 자료형을 사용하여 문제를 해결할 수 있겠습니다.
  • 이후 길이가 같으면 해당 값을 가지고 비교하여 정렬하고
  • 길이가 같지 않으면 길이가 짧은 순서에서 긴 순서로 정렬합니다
var arr:Set<String> = []
let num = Int(readLine()!)!
for _ in 1...num {
    arr.insert(readLine()!)
}
let newArr = arr.sorted { s1, s2 in
    if s1.count == s2.count {
        return s1 < s2
    } else {
        return s1.count < s2.count
    }
}

for i in newArr {
    print(i)
}

 

 

 

 

ytw_developer