[Kotlin]PS_5

Hood·2024년 8월 6일

매일PS

목록 보기
5/11
post-thumbnail

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

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


🔎 10811번

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

이 문제는 어제 풀었던 10813번과 유사한 문제인데
다른 점이 있다면 이건 i와 j사이의 모든 배열을 뒤집는 점이다.
그래서 while 문을 사용해서 i가 j가 되기 전까지 모든 배열을 뒤집어 주는 방법으로 풀어주면 된다.
또 어제 생각 못했지만 배열은 0부터 시작하기에 미리 i와 j에 -1을 미리 넣어 코드를 최소화 시켜주었다.

import java.util.Scanner

fun main() {
    val sc = Scanner(System.`in`)
    val n = sc.nextInt()
    val m = sc.nextInt()
    val array = IntArray(n) {it + 1}
    val result = StringBuilder()

    for (x in 0 until m){
        var i = sc.nextInt() - 1
        var j = sc.nextInt() - 1

        while (i < j)
        {
            val temp = array[i]
            array[i++] = array[j]
            array[j--] = temp
        }
    }

    for (y in array)
        result.append("$y ")

    println(result)
}

🔎 1546번

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

이건 n을 생성하여 배열을 몇 개를 받을지 정하고
mutableListOf 로 배열 안의 값을 변경할 수 있도록 만들어 주었다.
배열을 새로 받아 주어야 하기에 repeat 문을 사용하여 n만큼 반복이 돌게 했고
그 사이에는 add를 하여 arr안에 Double로 배열을 받아 주었다.
다음 배열 안의 max값을 추출해주고
조건에 맞게 계산해 출력하면 끝이다.

import java.util.Scanner

fun main() {
    val sc = Scanner(System.`in`)
    val n = sc.nextInt()
    val arr = mutableListOf<Double>()

    repeat(n){
        arr.add(sc.nextDouble())
    }
    val arrMax = arr.max()

    for (i in 0 until n){
        arr[i] = (arr[i] / arrMax) * 100
    }

    println("${arr.sum() / n}")
}

🔎 27866번

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

배열 파트가 끝나고 문자열로 다시 넘어 왔는데
문자열의 인덱스를 사용하는 간단한 문제였다.

fun main() {
    val str = readlnOrNull().toString()
    val n = readlnOrNull()?.toInt()

    println(str[n!! - 1])
}

📌결론

디버깅을 통해 실력이 점차 늘어나는 것 같아서 좋았고
내가 원하는 만큼 반복을 도는 repeat문을 처음 알았는데 굉장히 편했다.
앞으로도 새로운 문법을 많이 알아두어야 겠다.

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

0개의 댓글