[Swift 코테] 백준 1316 그룹 단어 체커
2022. 3. 17. 16:30ㆍSwift 코딩테스트/Swift 백준 문제 풀이
728x90
배열과 집합의 인덱스를 활용해 문제를 풀었습니다.
1. 배열의 중복 요소를 제거한 집합을 만들고
2. 집합의 요소를 기준으로 배열에서 해당 요소의 처음, 마지막 인덱스를 구조체에 저장합니다.
3. 구조체를 처음 인덱스를 기준으로 정렬한 후
4. 해당 요소의 마지막 인덱스와 다음 요소의 처음 인덱스를 비교합니다.
5. lastIndex < firstIndex 라면 count += 1
6. lastIndex > firstIndex 라면 return false
코드
import Foundation
struct order{
var start: Int
var end: Int
}
var num = Int(readLine()!)!
var count = 0
for i in 0..<num{
var line = readLine()!
groupWord(s: line)
}
func groupWord(s: String) -> Bool{
var arr = Array(s)
var set = Set(arr)
var comp = [order]()
for j in set{
comp.append(order(start: arr.firstIndex(of: j)!, end: arr.lastIndex(of: j)!))
}
comp = comp.sorted(by: {$0.start
< $1.start})
for k in 0..<set.count - 1{
if comp[k].end > comp[k + 1].start{
return false
}
}
count += 1
return true
}
print(count)
728x90
'Swift 코딩테스트 > Swift 백준 문제 풀이' 카테고리의 다른 글
[Swift 코테] 백준 3053 택시 기하학 (0) | 2022.04.25 |
---|---|
[Swift 코테] 백준 2775 부녀회장이 될테야 (0) | 2022.04.15 |
[Swift 코테] 백준 2941 크로아티아 알파벳 (0) | 2022.03.17 |
[Swift 코테] 백준 11654 아스키 코드 (0) | 2022.03.14 |
[Swift 코테] 백준 10818 최소, 최대 (0) | 2022.03.08 |