요구능력 : 딕셔너리를 활용할 수 있느냐
코드설명 : 우선, 대소문자 상관안하는데 대문자로 출력해야되니까 모두 대문자로 바꿔준다.
그리고 받은 문자열마다 각각 개수를 세줄 것이고 동일한 문자열이 나오면 더해줄것 밖에 할게없기 때문에, Dictionary를 활용할것이다.
ex) mississipi일 경우 dict의 Key는 m, i, s, p 만 존재한다.
for문을 보면 dict의 value가 nil일 경우 처음 나오는 알파벳이기 때문에, 1을 넣어주고 아니면 1을 더해준다.
이제, result를 선언해준 이유를 보자. result는 dict의 value의 max값을 갖는 문자들을 배열로 받아 가장 큰 값이 2개이상 존재하는걸 처리해줄 것이다.
코드를보면 dict의 모든 키들을 순회할 것이다.
그리고 마지막에 result가 1개보다 많을경우는 ?를 출력하고 아니면 result에 저장된 값은 1개이니 그걸 출력해주면 된다.
후기 : 문자열의 개수를 셀 때에는 Dictionary를 활용하자!
import Foundation
let word = readLine()!.uppercased()
var dict: [String:Int] = [:]
var result: [String] = []
for i in word {
if dict[String(i)] == nil {
dict[String(i)] = 1
}else {
dict[String(i)]! += 1
}
}
for key in dict.keys {
if dict[key] == dict.values.max() {
result.append(key)
}
}
print(result.count > 1 ? "?" : "\(result[0])" )
'Algorithm > 문제풀이_백준' 카테고리의 다른 글
Swift) 백준 2908번 (0) | 2021.07.29 |
---|---|
Swift) 백준 1152번 (0) | 2021.07.28 |
Swift) 백준 2675번 (0) | 2021.07.26 |
Swift) 백준 10809번 (0) | 2021.07.26 |
Swift) 백준 11720번 (0) | 2021.07.24 |
댓글