IT Study
-
[백준 알고리즘/Kotlin] 1181번 단어 정렬 (feat. Set에서 List로 변경?)IT Study/백준 알고리즘 2024. 1. 1. 17:19
1181번 문제는 문제 속에 정답이 있습니다. 1. 길이가 짧은 것부터 2. 길이가 같으면 사전 순으로 단, 중복된 단어는 하나만 남기고 제거해야 한다. 문제는 풀이해야 할 순서를 만들고, 그 순서대로 코드를 작성하면 되는데요. 아래와 같이 순서를 바꿔보도록 하죠. 1. 중복된 단어는 하나만 남기고 제거해야 한다. 2. 길이가 짧은 것부터, 길이가 같으면 사전 순으로 먼저 중복을 제거하고, 정렬해주도록 하겠습니다. 최종 코드 import java.lang.StringBuilder fun main() = System.`in`.bufferedReader().use { br -> val n = br.readLine().toInt() val result = StringBuilder() // 중복 제거 val s..
-
[백준 알고리즘/Kotlin] 2563번 색종이 (feat. 2차원 배열 2)IT Study/백준 알고리즘 2023. 12. 31. 12:42
고민하기 어떻게 풀어야할지 고민부터 해보죠. 1. 가로와 세로가 각각 100인 2차원 배열을 생성합니다. 초기에는 모든 요소를 0으로 설정합니다. 이 배열은 도화지를 나타내며, 각 요소는 해당 위치에 색종이가 있는지를 표시합니다. 2. 색종이의 수를 입력받습니다. 3. 색종이의 위치를 입력받습니다. 이 위치는 색종이의 왼쪽 상단 모서리를 나타냅니다. 4. 색종이의 크기가 10x10이므로, 해당 위치에서 가로와 세로로 10칸에 해당하는 배열의 요소를 1로 설정합니다. 5. 이제 도화지에 색종이가 있는 위치는 배열에서 1로 표시되어 있습니다. 따라서 배열의 모든 요소를 순회하면서 1인 요소의 수를 세면, 이것이 색종이가 붙은 검은 영역의 넓이가 됩니다. 최종 코드 fun main() = System.`in`..
-
[백준 알고리즘/Kotlin] 2738번 행렬 덧셈 (feat. 2차원 배열)IT Study/백준 알고리즘 2023. 12. 31. 12:03
안녕하세요, 오늘은 2차원 배열을 다루는 방법에 대해 알아보도록 하겠습니다. 먼저, 최종 코드를 살펴봅시다. 최종 코드 fun main() = System.`in`.bufferedReader().use { br -> val (n, m) = br.readLine().split(" ").map { it.toInt() } val array = Array(n) { IntArray(m) } for (i in 0 until n) { array[i] = br.readLine().split(" ").map { it.toInt() }.toIntArray() } for (i in 0 until n) { val row = br.readLine().split(" ").map { it.toInt() } for (j in 0 u..
-
[Kotlin] 코틀린의 Map: mapOf, mutableMapOf, Map의 차이IT Study/컴퓨터 기초 2023. 12. 27. 16:52
코틀린 역시 컬렉션 라이브러리를 제공하며, 그 중 맵(map)은 키-값 쌍을 저장하는 데 사용됩니다. 맵은 Map, mapOf, mutableMapOf 등 다양한 방식으로 표현될 수 있습니다. 이들 각각의 차이점과 사용 시기에 대해 알아봅시다. 1. Map Map은 코틀린에서 제공하는 인터페이스입니다. Map 타입의 변수는 변경 불가능한 맵(read-only map) 또는 변경 가능한 맵(mutable map)을 참조할 수 있습니다. 이를 통해 프로그램의 유연성을 높여줍니다. val map1: Map = mapOf("one" to 1, "two" to 2) val map2: Map = mutableMapOf("one" to 1, "two" to 2) 2. mapOf mapOf는 변경이 불가능한 맵(rea..
-
[백준 알고리즘/Kotlin] 1157번 단어 공부 (feat. maxOrNull, count, indexOf)IT Study/백준 알고리즘 2023. 12. 27. 14:15
이번 글에서는 Kotlin을 이용해 문자열에서 가장 빈도수가 높은 알파벳을 찾는 방법에 대해 알아보겠습니다. 이 문제는 대소문자를 구분하지 않고, 가장 빈도수가 높은 알파벳이 여러 개인 경우 '?'를 출력하는 것이 특징입니다. 최종 코드와 함께 사용된 주요 메서드를 보도록 하겠습니다. 최종 코드 fun main() = System.`in`.bufferedReader().use { br -> val word = br.readLine().uppercase() val counts = IntArray(26) for (char in word) { counts[char - 'A']++ } val max = counts.maxOrNull() val maxCount = counts.count { it == max } ..
-
[Kotlin] 알고리즘 풀이하며 배운 개념 정리하기 (feat. addAll, mutableSetOf -Set)IT Study/컴퓨터 기초 2023. 12. 26. 19:23
1. addAll addAll 함수는 특정 컬렉션에 다른 컬렉션의 모든 요소를 추가하는 데 사용됩니다. 1-1. List에서 Set 추가 fun main() { // 1. 가변 Set 생성 val set1 = mutableSetOf(1, 2, 3) // 2. 리스트에서 추가할 요소를 가지고 있는 컬렉션 val listToAdd = listOf(3, 4, 5) // 3. set1에 listToAdd의 모든 요소를 추가 set1.addAll(listToAdd) // 4. 결과 출력 println("Set1: $set1") } // 출력 // Set1: [1, 2, 3, 4, 5] 1-2. Set에서 List 추가 fun main() { // 1. 가변 List 생성 val list1 = mutableList..
-
[백준 알고리즘/Kotlin] 2588번 곱셈 (feat. toString() 이후 toInt() 사용)IT Study/백준 알고리즘 2023. 12. 26. 16:03
1. 최종 코드 fun main() = System.`in`.bufferedReader().use { br -> val n = br.readLine().toInt() var m = br.readLine() for (i in 2 downTo 0) { val result = n * m[i].toString().toInt() println(result) } print(n * m.toInt()) } 코드를 분석해 보도록 하죠. 아주 단순하지만, 유심히 봐야 할 곳이 있습니다. 2. 코드 살펴보기 for (i in 2 downTo 0) { val result = n * m[i].toString().toInt() println(result) } 2-1. downTo downTo는 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. 예외 처리한 형태 안전한 코딩을 연습하기 위해서는 예외 처리를 습관화하는 것이 좋겠습니다. (예외가 발생활 확률이 매우 낮을 때는 사용하지 않는 것도 좋을 것 같네요. 필요할 때를 잘 구분해서..