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
- DFS
- back-end
- baekjoon
- 그래프
- 모던자바
- 코틀린
- backtracking
- LEVEL2
- Java8
- 스프링
- 네트워크
- 프로젝트
- java
- algorithm
- Brute-force
- TDD
- OS
- 자바
- 운영체제
- Spring
- 백트래킹
- DP
- 자료구조
- BFS
- kotlin
- 프로그래머스
- lambda
- programmers
- 백준
- 알고리즘
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