코틀린/백준

[백준 1157] 단어 공부 - 코틀린(Kotlin)

Jakorithm 2023. 11. 22. 00:38
728x90

문제

https://www.acmicpc.net/problem/1157

 

1157번: 단어 공부

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

www.acmicpc.net

 

 

코드

알파벳 대소문자로 이루어진 문자열을 입력받아 가장 많이 사용된 알파벳을 출력하는 문제다.

  • 대문자와 소문자를 구분하지 않는다.
  • 가장 많이 사용된 알파벳이 2개 이상인 경우 ?를 출력한다.
fun main() {
    // 사용자로부터 문자열을 입력받고, 모든 알파벳을 대문자로 변환
    val input = readln().uppercase(Locale.getDefault())
    
    // 각 알파벳의 등장 횟수를 저장할 배열 초기화
    val arr = IntArray(26) { 0 }

    // 입력된 문자열을 순회하면서 각 알파벳의 등장 횟수 증가
    repeat(input.length) {
        val idx = input[it] - 'A'
        arr[idx]++
    }

    var max = -1
    var result = '?'

    repeat(arr.size) {
        if (max < arr[it]) {
            // 현재까지 가장 많이 등장한 횟수보다 더 많이 등장한 경우 업데이트
            max = arr[it]
            result = (it + 65).toChar()  // 가장 많이 등장한 알파벳 저장
        } else if (max == arr[it]) {
            // 가장 많이 등장한 횟수와 동일한 경우 결과를 '?'로 저장
            result = '?'
        }
    }

    // 결과 출력
    println(result)
}
728x90