본문 바로가기

BOJ알고리즘

BOJ 1157 with Swift

반응형

BOJ 1157 with Swift

1157번: 단어 공부

문제

  • 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.

입력값

  • 첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 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