[Kotlin]PS_9

Hood·2024년 8월 11일

매일PS

목록 보기
9/11
post-thumbnail

✍   Kotlin을 사용한 백준 알고리즘 문제풀이

매일 백준의 알고리즘 문제를 풀며 3문제씩 풀며
한 언어를 마스터 할 것을 목표로 이 글을 작성할 예정입니다.


🔎 2444번

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

별을 찍는 문제는 조건을 보고 반복문을 잘 돌려줘야 하는데
kotlin에는 downTo라는 조건이 있어 뒤부터 시작하는 반복도 만들어 줄 수 있었다.
출력을 위해서 n - x + 1 의 조건과 2 * n일 때 * 을 출력하도록
그리고 다 만든 뒤 리버스로 만들 때도 마찬가지의 조건을 걸어 주었다.

fun main() {
    val n = readln().toInt()

    for (x in 1 until n){
        for (y in 1 until n - x + 1){
            print(" ")
        }
        for (y in 1 until 2 * x){
            print("*")
        }
        println()
    }

    for (x in n downTo 1){
        for (y in 1 until n - x + 1){
            print(" ")
        }
        for (y in 1 until 2 * x){
            print("*")
        }
        println()
    }
}

🔎 10988번

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

이 문제도 reversed() 라는 함수로 쉽게 문자를 뒤집어서 비교해볼 수 있기에 간편하게 풀 수 있었다.

fun main() {
    val str = readln()
    if(str == str.reversed()){
        println("1")
    } else {
        println("0")
    }
}

🔎 1157번

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

이 문제를 이해하는 데 시간이 걸렸지만
문자열을 하나씩 따와서 그것을 List안에 넣고 수를 옆에 넣어주어
Map <char, Int> 형식으로 만들어 주고 char에는 내가 입력한 문자열의 알파벳들이
Int에는 그 알파벳의 수를 Map안에 넣어주었다.
다 넣었다면 문자열 중 가장 많이 들어가있는 알파벳을 가져오는 max를 만들어주고
그것이 1보다 크다는 의미는 그 문자열이 만약 하나의 문자열만 받을 때는
또 그 알파벳이 가장 많기에 출력해야한다.
조건을 이해하는데 상당히 어려웠지만 좋은 문제였다.

fun main(){
   val str = readln()
   val strMap = mutableMapOf<Char, Int>()

    str.forEach {
        val char = it.lowercaseChar()

        if(strMap.containsKey(char)){
            strMap[char] = strMap[char]!!.plus(1)
        } else {
            strMap[char] = 1
        }
    }

    val max = strMap.maxBy { it.value }
    if(strMap.filter { it.value == max.value }.count() > 1){
        print("?")
    } else {
        print(max.key.uppercaseChar())
    }
}

📌결론

점점.. 알아야 할 함수들이 많아지는 것 같다.
내장함수에 대해 한 번 정리를 해야겠다.

profile
달을 향해 쏴라, 빗나가도 별이 될 테니 👊

0개의 댓글