백준 Kotlin
-
[백준 알고리즘/Kotlin] 10869번 사칙연산 (feat. 입출력, append 체이닝)IT Study/백준 알고리즘 2023. 12. 26. 15:32
Kotlin 기초부터 탄탄히 가보죠. 1. 백준 알고리즘 풀이 시, 입출력의 기본 형태 1-1. 기본 형태 (simple) import java.io.BufferedReader import java.io.InputStreamReader import java.io.IOException fun main() { val br = BufferedReader(InputStreamReader(System.`in`)) val result = StringBuilder() println(result) br.close() } 1-2. 예외 처리한 형태 안전한 코딩을 연습하기 위해서는 예외 처리를 습관화하는 것이 좋겠습니다. (예외가 발생활 확률이 매우 낮을 때는 사용하지 않는 것도 좋을 것 같네요. 필요할 때를 잘 구분해서..
-
[백준 알고리즘/Kotlin] 4673번 셀프 넘버 (feat. Array의 fill과 초기화 람다 차이)IT Study/백준 알고리즘 2023. 12. 25. 17:02
다른 돌파구가 있을까 생각했지만, 이 문제는 브루트포스. 완전 탐색으로 접근합니다. 1. 최종 코드 // 완전 탐색 // (1) 1 ~ 9999, 모든 수 d(n) 계산 // (2) isSelfNumber, d(n)인 수는 false 표기 fun main() { var isSelfNumber = BooleanArray(10000) { true } for (i in 1 until 10000) { var num = i var sum = i while (num > 0) { sum += num % 10 num /= 10 } if (sum < 10000) { isSelfNumber[sum] = false } } for (i in 1 until 10000) { if (isSelfNumber[i] == true) {..
-
[백준 알고리즘/Kotlin] 1202번 보석 도둑 (feat. mutableListOf, PriorityQueue)IT Study/백준 알고리즘 2023. 12. 25. 15:47
문제는 생각보다 심플한 듯하였습니다. 그래서 아래와 같은 로직을 세우고, 이대로 코드를 작성해야겠다고 생각했습니다. 1. 용량이 작은 가방부터 꺼낸다. (꺼냄과 동시에 자료형에서 제거해야 한다.) 2. 꺼낸 가방의 용량보다 작거나 같은 보석 중 가장 가격이 높은 보석을 꺼낸다. (꺼냄과 동시에 자료형에서 제거해야 한다.) 3. 해당하는 보석의 가격을 확인하여 result에 + 한다. 4. 더이상더 이상 꺼낼 가방이 없을 때 종료 (혹은 더 이상 꺼낼 주얼리가 없을 때 종료) 1. 시간 초과된 코드 import java.io.BufferedReader import java.io.InputStreamReader import java.util.PriorityQueue fun main() { val br = B..
-
[백준 알고리즘/Kotlin] 1789번 수들의 합IT Study/백준 알고리즘 2023. 12. 21. 16:56
바로 문제로 들어가기 전에... Int, Long 범위보고 가실게요~ 1. Int와 Long의 범위 1. Int 범위 크기 : 32 bit 범위 : - 2³¹ ~ 2³¹ -1 (- 2,147,483,648 ~ 2,147,483,647, 약 -21억 ~ 21억) 2. Long 범위 크기 : 64bit 범위 -2⁶³ ~ 2⁶³ - 1 (약 -9경 ~ 9경) 대부분의 코드에서는 Int를 사용해도 충분했기에 Int를 사용했지만, 문제에 주어진 입력 조건을 확인해보니, Long을 사용해야겠습니다. 2. 최종 코드 n * (n + 1) / 2 연속되는 자연수의 합 공식을 사용하여 풀이했습니다. 연속되는 수의 곱을 찾기 위해 루트를 사용했는데요, 루트를 이용하면 두 수의 곱에 가장 가까운 값을 빠르게 찾을 수 있을 ..
-
[백준 알고리즘/Kotlin] 1931번 회의실 배정 (feat. 입력 받기 이젠 정복한 듯...?)IT Study/백준 알고리즘 2023. 12. 21. 15:07
1. 입력 받기 첫 줄에는 하나의 값 n을 받고, 둘째 줄부터 n+1 줄까지 공백을 사이에 둔 2개의 정수 받기 import java.io.BufferedReader import java.io.InputStreamReader fun main() { val br = BufferedReader(InputStreamReader(System.`in`)) val n = br.readLine().toInt() val meetings = mutableListOf() repeat(n) { val (start, end) = br.readLine.split(" ").map { it.toInt() } meetings.add(start to end) } br.close() } 코드를 자세히 살펴보겠습니다. 1. mutable..