[백준] 가장 많은 글자 (1371)(kotlin)

문제 설명

백준 1371번 문제 링크

입력 및 출력

» 입력

첫째 줄부터 글의 문장이 주어진다. 글은 최대 5000글자로 구성되어 있고, 공백, 알파벳 소문자, 엔터로만 이루어져 있다. 그리고 적어도 하나의 알파벳이 있다.

» 출력

첫째 줄에 가장 많이 나온 문자를 출력한다. 여러 개일 경우에는 알파벳 순으로 앞서는 것부터 모두 공백없이 출력한다.

예제 입출력(테스트케이스)

입력 출력
english is a west germanic
language originating in england
and is the first language for
most people in the united
kingdom the united states
canada australia new zealand
ireland and the anglophone
caribbean it is used
extensively as a second
language and as an official
language throughout the world
especially in common wealth
countries and in many
international organizations
a
baekjoon online judge eno

문제 풀이1

import java.util.Scanner

fun main(args: Array<String>) = with(Scanner(System.`in`)) {
    var charIdx = IntArray(26) { 0 }
    var max = 0

    while (hasNextLine()) {
        val str = nextLine()

        str.forEach {
            if (it in 'a'..'z') {
                charIdx[it - 'a']++
                if (max < charIdx[it - 'a']) max = charIdx[it - 'a']
            }
        }
    }

    charIdx.forEachIndexed { index, int ->
        if (max == int) print('a' + index)
    }
}

문제 풀이2

import java.io.BufferedReader
import java.io.InputStreamReader

fun main(args: Array<String>) = with(BufferedReader(InputStreamReader(System.`in`))) {
    var charIdx = IntArray(26) { 0 }
    var max = 0

    while (true) {
        val str = readLine() ?: break

        str.forEach {
            if (it != ' ') {
                charIdx[it - 'a']++
                if (max < charIdx[it - 'a']) max = charIdx[it - 'a']
            }
        }
    }

    charIdx.forEachIndexed { index, int ->
        if (max == int) print('a' + index)
    }
}