Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- java
- programmers
- BFS
- 백준
- DFS
- 네트워크
- 운영체제
- 자료구조
- backtracking
- 프로그래머스
- 그래프
- back-end
- DP
- baekjoon
- Java8
- 프로젝트
- algorithm
- 백트래킹
- lambda
- 스프링
- 모던자바
- kotlin
- Spring
- 자바
- 알고리즘
- LEVEL2
- OS
- 코틀린
- Brute-force
- TDD
Archives
- Today
- Total
요깨비's LAB
[백준, Brute-Force, Kotlin] P.2798 블랙잭 본문
1. 딜러가 부른 값에 일치하거나 가장 근접한 값을 꺼내야 하므로, Priority Queue를 활용하기로 결정하였습니다.
(내림 차순 정렬)
2. 전체 탐색을 하여 계산한 결과가 딜러가 부른 값을 초과하지 않을 경우 pq에 저장합니다.
3. 전체 탐색 과정 중 딜러가 부른 값과 같은 결과가 나오면 전체 탐색을 중단하고 결과를 리턴합니다.(나름의 성능 개선?)
4. pq에 값을 한개 꺼내 출력합니다.
import java.util.*
var N:Int = 0
var M:Int = 0
fun main(args: Array<String>) {
val scr = Scanner(System.`in`)
N = scr.nextInt()
M = scr.nextInt()
var arr = IntArray(N) { -1 }
for(i in 0 until N) {
val element = scr.nextInt()
arr[i] = element
}
val pq = calculate(arr)
println(pq.poll())
}
fun calculate(arr: IntArray): PriorityQueue<Int> {
val pq = PriorityQueue<Int>(kotlin.Comparator { o1, o2 ->
o2 - o1
})
for(i in 0 until N) {
for(j in i+1 until N) {
for(k in j+1 until N) {
val num = arr[i] + arr[j] + arr[k]
if(num == M) {
// println("Hit")
pq.add(num)
return pq
}
if(num > M) {
continue
}
if(num < M) {
pq.add(num)
}
}
}
}
return pq
}
'알고리즘(Kotlin) > Brute-Force' 카테고리의 다른 글
[백준, Brute-force, Kotlin] P.9093 단어뒤집기 (0) | 2021.05.28 |
---|---|
[백준, Brute-force, Kotlin] P.10819 차이를 최대로 (0) | 2021.04.02 |
[프로그래머스, Kotlin] 문자열 압축 (0) | 2021.03.25 |
[프로그래머스, Kotlin] 크레인 인형뽑기 게임 (0) | 2021.03.09 |
Comments