Kotlin/Algorithm Problems

<백준> 24.05.24에 푼 문제들

re트 2024. 5. 24. 20:56
728x90

1. 가희와 키워드(Silver 2)

[백준]

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

[깃허브]

 

ForCodeKata/baekjoon 문제집/가희와 키워드 at main · heesoo-park/ForCodeKata

알고리즘 문제 코드 저장소. Contribute to heesoo-park/ForCodeKata development by creating an account on GitHub.

github.com

제출 결과

작성한 코드는 다음과 같다.

import java.io.*
import java.util.*

fun main(args: Array<String>) {
    val br = BufferedReader(InputStreamReader(System.`in`))
    val bw = BufferedWriter(OutputStreamWriter(System.out))
    
    val (n, m) = br.readLine().split(' ').map { it.toInt() }
    
    val keywords: HashSet<String> = hashSetOf()
    repeat(n) {
        keywords.add(br.readLine())
    }
    
    repeat(m) {
        val usedKeywords = br.readLine().split(',')
        usedKeywords.forEach {
            if (keywords.contains(it)) keywords.remove(it)
        }
        
        bw.write("${keywords.size}\n")
    }
    
    bw.flush()
    bw.close()
}

 

2. 최소 힙(Silver 2)

[백준]

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

[깃허브]

 

ForCodeKata/baekjoon 문제집/최소 힙 at main · heesoo-park/ForCodeKata

알고리즘 문제 코드 저장소. Contribute to heesoo-park/ForCodeKata development by creating an account on GitHub.

github.com

제출 결과

작성한 코드는 다음과 같다.

import java.io.*
import java.util.*

fun main(args: Array<String>) {
    val br = BufferedReader(InputStreamReader(System.`in`))
    val bw = BufferedWriter(OutputStreamWriter(System.out))
    
    val n = br.readLine().toInt()
    val pq = PriorityQueue<Int>() { a, b ->
        a.compareTo(b)    
    }
    
    repeat(n) {
        val num = br.readLine().toInt()
        if (num == 0) {
            if (pq.isNotEmpty()) {
                bw.write("${pq.poll()}\n")
            } else {
                bw.write("0\n")
            }
        } else {
            pq.offer(num)
        }
    }
    
    bw.flush()
    bw.close()
}

 

3. 랭킹전 대기열(Silver 2)

[백준]

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

[깃허브]

 

ForCodeKata/baekjoon 문제집/랭킹전 대기열 at main · heesoo-park/ForCodeKata

알고리즘 문제 코드 저장소. Contribute to heesoo-park/ForCodeKata development by creating an account on GitHub.

github.com

제출 결과

작성한 코드는 다음과 같다.

import java.io.*
import java.util.*

data class Player(
    val level: Int,
    val id: String
) {
    companion object {
        fun makePlayer(info: List<String>): Player {
            return Player(info[0].toInt(), info[1])
        }
    }
}

val rooms: MutableList<MutableList<Player>> = mutableListOf()

fun main(args: Array<String>) {
    val br = BufferedReader(InputStreamReader(System.`in`))
    val bw = BufferedWriter(OutputStreamWriter(System.out))
    
    val (p, m) = br.readLine().split(' ').map { it.toInt() }
    
    repeat(p) {
        val player = Player.makePlayer(br.readLine().split(' '))
        if (rooms.isEmpty()) {
            rooms.add(mutableListOf(player))
        } else {
            var flag = false
            for (i in rooms.indices) {
                if (rooms[i].size < m && rooms[i][0].level in player.level - 10..player.level + 10) {
                    rooms[i].add(player)
                    flag = true
                    break
                }
            }
            
            if (!flag) {
                rooms.add(mutableListOf(player))
            }
        }
    }
    
    rooms.forEach { room ->
        if (room.size == m) bw.write("Started!\n")
        else bw.write("Waiting!\n")
        
        val sortedRoom = room.sortedBy { it.id }
        
        sortedRoom.forEach { member ->
            bw.write("${member.level} ${member.id}\n")    
        }
    }
    
    bw.flush()
    bw.close()
}
반응형

'Kotlin > Algorithm Problems' 카테고리의 다른 글

<백준> 24.05.28에 푼 문제  (0) 2024.05.28
<백준> 24.05.27에 푼 문제들  (0) 2024.05.27
<백준> 24.05.23에 푼 문제들  (0) 2024.05.23
<백준> 24.05.22에 푼 문제들  (0) 2024.05.22
<백준> 24.05.20에 푼 문제들  (0) 2024.05.20