
import Foundation
func solution(_ my_string:String) -> [Int] {
var result = Array(repeating: 0, count: 52)
var alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
alpha += alpha.lowercased
my_string.forEach { str in
alpha.forEach {
if str == $0 {
result[Array(alpha).firstIndex(of: $0)!] += 1
}
}
}
return result
}
var result = Array(repeating: 0, count: 52)
result[Array(alpha).firstIndex(of: $0)!] += 1
Array.firstIndex(of: Element): 반환값은 Int? 이므로 강제언래핑import Foundation
func solution(_ my_string:String) -> [Int] {
var result = Array(repeating: 0, count: 52)
my_string.forEach {
result[Int($0.asciiValue!) - ($0.isUppercase ? 65 : 71)] += 1
}
return result
}
let a: Character = "A"
if let ascii = a.asciiValue {
print(ascii) // 출력: 65
}
UInt8?(옵셔널 UInt8) 타입이다. → Int와 사용 시 형변환 필요nil을 반환한다.💡 주요 아스키 코드를 알아두자.
- 대문자 A-Z: 65-90
- 소문자 a-z: 97-122
- 숫자 0-9: 48-57
- 공백: 32
let a: Character = "A"
print(a.isUppercase) // 출력: true
이중 forEach문 코드를 작성하면서도 이게 맞나, 긴가민가했는데 문자를 아스키코드로 바꿔주는 함수가 있다니! 갓위프트..👍 시간복잡도가 훨씬 축약됐다.
배열 선언과 동시에 초기화하는 코드도 많이 사용할 것 같으니 외워두기.