728x90
코딩테스트의 구현문제를 위해 빠질 수 없는 문자열처리에 대한 Swift 문법을 정리해보자
1. 문자열 입력받기
Swift에서 readLine() 함수를 사용해서 한줄 읽어들일 수 있는데, 이때 nil 값이 들어올 수 도 있으므로 Swift는 readLine 함수가 Optional 타입의 String을 반환하게 설계한듯하다
어처피 백준에서 옵셔널 처리할 일은 없으므로 강제옵셔널 (!) 처리를 해준다.
var input = readLine()! // 문자열 하나 입력받기
2. 문자열의 원소를 하나씩 출력하기
!! Swift는 input[1] 이런식으로 바로 Int 값으로 인덱스 접근이 허용되지 않는다 !!
index() 메소드를 이용해서 인덱스를 가져온 후 가져온 인덱스로 문자열에 접근해야 한다
for i in 0..<input.count {
var idx = input.index(input.startIndex, offsetBy: i)
// swift는 input[1] 이렇게 바로 문자열 인덱스로 Int를 받지 않는다
print(type(of: idx))
print(input[idx])
}
출력해본 결과 놀랍게도 Index라는 type이 swift에 있다...!
파이썬을 써본 사람의 입장으로 위의 저 코드가 마음에 안들어서 찾아보니까 다음과 같은 indices() 를 통해 인덱스로 바로 접근이 가능했다. 물론 index.indices를 통해 얻어지는 저 i 의 값 또한 index 타입이다.
for i in input.indices {
print(input[i])
}
Apple 공식문서에 따르면 indices 는 collection 타입에 유효하고, 오름차순으로 기본 설정이 되어있다!!
swift에서의 collection 타입이란, 공식문서에 따르면 Array, Set, Dictionary 세가지를 말한다
728x90