[Kotlin]PS_2

Hood·2024년 7월 29일

매일PS

목록 보기
2/11
post-thumbnail

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

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


🔎  2480번

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

주사위 3개를 공백으로 모두 받아야 하기에 split을 사용함
그 뒤 조건에 따라 ifwhen 문을 사용하여 풀던 중
모두 다른 눈일 때 가장 큰 눈 * 100원을 해야하기에 숫자를 list로 묶어주어
그중 .max()가 100과 곱해지게 만들어 줌

fun main() {
    val (a, b, c) = readln().split(" ").map { it.toInt() }
    val nums = listOf(a, b ,c)
    if (a == b && b == c){
        print( 10000 + a * 1000 )
    }
    else if (a == b || b == c || a == c) {
        when {
            a == b -> {
                print( 1000 + a * 100 )
            }
            b == c -> {
                print( 1000 + b * 100 )
            }
            else -> {
                print ( 1000 + c * 100 )
            }
        }
    }
    else {
        print( nums.max() * 100)
    }
}

🔎  25304번

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

영수증을 검산하는 프로그램으로 총 금액과 물건 갯수를 하나씩 받아준 뒤
totalCheck를 만들어 주어 for문 안에 물건과 갯수를 받을 수 있는 변수를 추가 한 후 더 해줌
마지막 조건으로 그게 맞다면 Yes를 틀리다면 No를 출력하게 해줌

fun main() {
    val total = readln().toLong()
    val count = readln().toInt()
    var totalCheck : Long = 0

    for (i in 1..count) {
        val (a, b) = readln().split(" ").map { it.toLong() }
        totalCheck += a * b
    }
    if (total == totalCheck){
        print("Yes")
    }
    else { print("No") }
}

🔎  25314번

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

문제를 이해하기 어려웠는데
생각해보니 그냥 byte에 4를 나눠서 그 만큼 Long을 출력하고
그 뒤 Int를 붙여주면 될 거라고 생각했고 그게 맞았음

fun main() {
    val byte = readln().toLong()
    for (i in 1..byte/4)
    {
        print("long ")
    }
    print("int")
}

📌결론

for 문 안에 변수를 받아서 코드를 최소화 할 수 있다는 걸 알 수 있었음
.max는 List안에 변수를 비교하기에 a,b,c가 있다면
그것을 묶어줄 변수가 필요하다는 것을 새로 알 수 있었음.

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

0개의 댓글