1. 집합(Silver 5)
[백준]
https://www.acmicpc.net/problem/11723
[깃허브]
ForCodeKata/baekjoon 문제집/집합 at main · heesoo-park/ForCodeKata
Contribute to heesoo-park/ForCodeKata development by creating an account on GitHub.
github.com
작성한 코드는 다음과 같다.
import java.io.BufferedWriter
import java.io.OutputStreamWriter
val setS = mutableSetOf<Int>()
fun main() = with(System.`in`.bufferedReader()) {
val bw = BufferedWriter(OutputStreamWriter(System.out))
val m = readln().toInt()
repeat(m) {
val operation = readln().split(' ')
when (operation[0]) {
"add" -> add(operation[1].toInt())
"remove" -> remove(operation[1].toInt())
"check" -> bw.write("${check(operation[1].toInt())}\n")
"toggle" -> toggle(operation[1].toInt())
"all" -> all()
"empty" -> empty()
}
}
bw.flush()
bw.close()
}
fun add(x: Int) {
setS.add(x)
}
fun remove(x: Int) {
setS.remove(x)
}
fun check(x: Int): Int {
return if (setS.contains(x)) 1 else 0
}
fun toggle(x: Int) {
if (check(x) == 1) remove(x) else add(x)
}
fun all() {
setS.addAll(1..20)
}
fun empty() {
setS.clear()
}
(실제로 리스트 내의 값을 변경하는 방법말고 배열 값을 플래그처럼 사용하는 방법이 있었다.)
2. 돌 게임(Silver 5)
[백준]
https://www.acmicpc.net/problem/9655
[깃허브]
ForCodeKata/baekjoon 문제집/돌 게임 at main · heesoo-park/ForCodeKata
Contribute to heesoo-park/ForCodeKata development by creating an account on GitHub.
github.com
작성한 코드는 다음과 같다.
import java.io.BufferedWriter
import java.io.OutputStreamWriter
/** n개 있을 때 마지막 돌을 가져갈 때까지의 횟수를 저장하는 dp배열 */
val dp = IntArray(1001)
fun main() = with(System.`in`.bufferedReader()) {
val bw = BufferedWriter(OutputStreamWriter(System.out))
val n = readln().toInt()
dp[1] = 1
dp[2] = 2
dp[3] = 1
for (i in 4..n) {
dp[i] = minOf(dp[i - 1], dp[i - 3]) + 1
}
bw.write(checkWinner(dp[n]))
bw.flush()
bw.close()
}
fun checkWinner(cnt: Int): String {
return if (cnt % 2 == 0) {
"CY"
} else {
"SK"
}
}
(짝수 홀수로만 판단하는 방법이 있더라. 1과 3만 뽑을 수 있으니 한 사이클이 지나면 무조건 짝수개가 빠지는 걸 생각해서 홀수면 SK, 짝수면 CY...!!)
3. 줄세우기(Silver 5)
[백준]
https://www.acmicpc.net/problem/10431
[깃허브]
ForCodeKata/baekjoon 문제집/줄세우기 at main · heesoo-park/ForCodeKata
Contribute to heesoo-park/ForCodeKata development by creating an account on GitHub.
github.com
작성한 코드는 다음과 같다.
import java.io.BufferedWriter
import java.io.OutputStreamWriter
fun main() = with(System.`in`.bufferedReader()) {
val bw = BufferedWriter(OutputStreamWriter(System.out))
val p = readln().toInt()
repeat(p) {
var result = 0
val case = readln().split(' ').map { it.toInt() }.toMutableList()
for (i in 2 until case.size) {
for (j in 1 until i) {
if (case[j] > case[i]) {
result += (i - j)
case.add(j, case.removeAt(i))
break
}
}
}
bw.write("${it + 1} $result\n")
}
bw.flush()
bw.close()
}
(여기도 값을 진짜로 바꾸는 거 말고 자기 앞에 있는 큰 숫자들의 개수를 세는 방식이 있더라)
'Kotlin > Algorithm Problems' 카테고리의 다른 글
<백준> 24.05.13에 푼 문제들 (0) | 2024.05.13 |
---|---|
<백준> 24.05.09에 푼 문제들 (0) | 2024.05.09 |
<백준> 24.05.07에 푼 문제들 (0) | 2024.05.07 |
<백준> 파티(Gold 3) (0) | 2024.05.03 |
<백준> 고층 건물(Gold 4) (0) | 2024.05.02 |