반응형
BOJ 1157 with Swift
문제
- 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
입력값
- 첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다.
출력값
- 첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.
예시
Mississipi -> ?
zZa -> Z
z -> Z
baaa -> A
코드
import Foundation
struct Q1157 {
static func main(){
if let str = readLine() {
var dic = [String:Int]()
// 각 알파벳별 개수 구하기(대문자로)
for char in str {
if dic.keys.contains(String(char).uppercased()){
if let value = dic[String(char).uppercased()] {
dic.updateValue(value + 1, forKey: String(char).uppercased())
}
}else {
dic.updateValue(1, forKey: String(char).uppercased())
}
}
// 가장 큰 개수 알파벳 출력
var result = dic.first!
for element in dic {
if result.value < element.value {
result = element
}
}
// 가장 큰 개수 알파벳이 중복되는지 확인
var check = 0
for element in dic {
if result.value == element.value {
check += 1
}
}
if check >= 2 {
print("?")
}else {
print(result.key)
}
}
}
}
Q1157.main()
반응형
'BOJ알고리즘' 카테고리의 다른 글
BOJ 1316 with Swift (0) | 2018.09.11 |
---|---|
BOJ 2675 with Swift (0) | 2018.09.10 |
BOJ 11654 with Swift (0) | 2018.09.02 |
BOJ 10809 with Swift (0) | 2018.09.02 |
BOJ 10039 with Swift (0) | 2018.09.02 |