반응형
10810번 공 넣기
문제 분석
바구니의 갯수는 N, 각각 바구니에서는 1번부터 N 번까지 번호가 매겨져 있다고 했다.
바구니들을 배열로 지정했을때 배열의 크기는 N, 바구니의 번호는 index + 1 형태이다.
또한 공이 들어있지 않은 바구니는 0을 출력하므로 바구니 배열의 초기값을 0으로 초기화 시켜줄 것이다.
바구니에는 공을 1개만 넣을 수 있다고 했기 때문에 공을 넣을때 바구니 배열 내의 값을 덮어씌워주면 된다.
M 번 공을 넣는다고 했기 때문에 M 번 반복해서 공을 넣는 작업을 진행해야 하고, 바구니 범위에 동일한 번호의 공을 넣는다고 하니배열 내 특정 범위에 모두 같은 값을 넣어주는 작업을 진행하게 될 것이다.
N의 수 범위와 M 의 수 범위는 Int 형으로 표현할 수 있을 것이고,
공을 넣는 방법 i, j 는 바구니의 범위 시작, 끝. k 는 공의 번호로써 M 번 반복하며
입력 -> 바구니 범위에 공 넣기 -> 입력 -> 바구니 범위에 공 넣기 ... 작업을 진행해야 한다.
정답 코드
import java.io.BufferedReader
import java.io.InputStreamReader
fun main() {
BufferedReader(InputStreamReader(System.`in`)).use { br ->
val (basketCount, ballCount) = br.readLine().split(" ").map { it.toInt() }
val basketArray = Array(basketCount, {0})
repeat(ballCount) {
val (start, end, ballNumber) = br.readLine().split(" ").map { it.toInt() }
(start .. end).forEach { i ->
basketArray[i - 1] = ballNumber
}
}
println(basketArray.joinToString(" "))
}
}
Deatil
- use
- BufferedReader 에 use 문을 사용하여 블록 안에서 BufferedReader 를 사용하고, 블럭 밖으로 나가면 자동으로 해제시켜준다.
- BufferedReader.close() 가 자동으로 호출되며, 예외가 발생해도 안전하게 자원을 정리할 수 있다는 장점이 있다.
- joinToString(separator, prefix, postfix, limit, truncated)
- 배열이나 리스트의 내용을 출력할 경우 joinToString(separator, prefix, postfix, limit, truncated) 문을 사용한다.
- 배열이나 리스트의 원소로 문자열을 만들어주는 함수로서, 각 인자의 역할은
- separator : 원소간 연결 시 사이에 들어갈 문자열
- prefix : 만들 문자열에서 시작할 문자열
- postfix : 만들 문자열에서 종료할 문자열
- limit : 몇개까지만 합칠지 지정
- truncated : limit 로 인해 보여주지 못한 문자열이 있으면 어떻게 보여줄지 정한다. 지정하지 않을 시 "..." 으로 표시된다
- 예시
val list = listOf("A", "B", "C", "D", "E")
println(list.joinToString("-", "start ", " end", 3, "XXX"))
// 출력 : start A-B-C-XXX end
- repeat
- repeat(N) { ... } 으로 사용하여 N 회만큼 { } 의 내용을 반복적으로 수행한다.
- for(i in 1 ... N) 와 동일하다. 더 편하게 사용할 수 있다.
- 람다를 이용한 array 기본값 초기화
- kotlin 에서 배열을 지정할때, 기본적으로 아래와 같이 사용한다.
val tempArray = Array(size) { value }
이렇게 하게 되면, tempArray 는 size 만큼의 배열 크기를 가지고, value 로 초기값이 지정된다. - Array(size) { index -> }
index 를 사용하여, 각 인덱스별로 초기값을 지정할 수 있다. - 이 문제에서는 공이 들어있지 않은 바구니를 0 으로 출력한다고 했고, 가장 처음 바구니에는 아무것도 들어있지 않으니
val basketArray = Array(N) { 0 } 으로 사용했다.
- kotlin 에서 배열을 지정할때, 기본적으로 아래와 같이 사용한다.
반응형
'코딩테스트' 카테고리의 다른 글
[백준] 10813 공 바꾸기 - Kotlin(코틀린) (2) | 2025.04.15 |
---|---|
[백준] 10811 바구니 뒤집기 - Kotlin(코틀린) (1) | 2025.04.14 |
[백준] 25314번 코딩은 체육과목 입니다 - Kotlin(코틀린) (0) | 2025.04.11 |
[백준] 11382번 꼬마 정민 - Kotlin(코틀린) (0) | 2025.04.11 |
Java(자바) - 선택정렬, 버블정렬, 삽입정렬, LRU(Least Recently Used) (1) | 2023.01.07 |