백준
-
[백준][Kotlin]11286번 절댓값 힙백준 2023. 2. 27. 23:21
해당 문제는 우선순위큐에 정렬조건에 따라 1개로도 작성할 수 있지만, 처음에 보고 떠오른 생각은 음수와 양수를 나누어서 저장하자는 아이디어가 떠올라 우선순위큐 2개를 사용하여 작성하였습니다. 하기는 작성한 코드와 제출 결과 입니다. import java.io.BufferedReader import java.io.BufferedWriter import java.io.InputStreamReader import java.io.OutputStreamWriter import java.util.* import kotlin.math.abs fun main() { // val s = System.currentTimeMillis() var br = BufferedReader(InputStreamReader(System..
-
[백준][Kotlin]11003번 최솟값 찾기백준 2023. 2. 27. 23:02
해당 문제는 data class 와 Deque를 사용하면 쉽게 풀 수 있는 문제였습니다. data class에는 인덱스 정보와 value 정보를 저장 할 수 있도록 만든 뒤에 deque에 입력 순서대로 확인하려는 갯수에 따른 확인하는 index인지 체크 하면서 저장할지 안할지를 혹은 삭제를 해야되는지 안해야 되는지 확인하며, bw에 해당 값을 넣어주면 최솟값을 찾아 낼 수 있습니다. 하기는 작성한 코드와 실행 결과 입니다. import java.io.BufferedReader import java.io.BufferedWriter import java.io.InputStreamReader import java.io.OutputStreamWriter import java.util.* data class Dc..
-
[백준][Kotlin]10989번 수 정렬하기3백준 2023. 2. 27. 22:54
해당 문제는 N이 최대 10,000개 이므로 배열을 10,001 사이즈로 만든 후 받은 입력값의 해당하는 index에 저장 후 해당 배열을 조회하면서 해당 인덱스의 값만큼 인덱스를 출력하면 해결 할 수 있는 문제였습니다. 하기는 작성한 코드와 채점 결과 입니다. import java.io.BufferedReader import java.io.BufferedWriter import java.io.InputStreamReader import java.io.OutputStreamWriter import java.util.* fun main() { // val s = System.currentTimeMillis() var br = BufferedReader(InputStreamReader(System.`in`)..
-
[백준][Kotlin]1377번 버블 소트백준 2023. 2. 27. 22:46
해당문제는 문제설명에 있는 버블정렬을 사용시 시간초과가 발생하는 문제입니다. 따라서 버블정렬을 사용하지 않고 스왑이 몇번이 일어났는지 알아내야하는 문제입니다. 해당 자료를 받으면서 data class를 사용하여 해당 자료의 index와 value 값을 저장하여 value 값 기준으로 정렬 후 index 와 정렬 전 index 값의 최대 차이를 구한 후 +1 를 해주면 답을 구할 수 있는 문제였습니다. 하기는 작성한 코드와 채점현황입니다. import java.io.BufferedReader import java.io.BufferedWriter import java.io.InputStreamReader import java.io.OutputStreamWriter import java.lang.Math.ma..
-
[백준][Kotlin]2164번 카드2백준 2023. 2. 26. 01:22
해당 문제는 간단히 큐를 알고 있다면 간단히 풀 수 있는 문제였습니다. 문제 설명을 보면 이제 다음과 같은 동작을 카드가 한 장 남을 때까지 반복하게 된다. 우선, 제일 위에 있는 카드를 바닥에 버린다. 그 다음, 제일 위에 있는 카드를 제일 아래에 있는 카드 밑으로 옮긴다. 라고 되어 있는데 해당 기능은 큐의 removeFirst() 와 pollFirst() 를 사용하여 간단히 구현이 가능합니다. 하기는 작성한 코드와 채점 결과 입니다. import java.io.BufferedReader import java.io.BufferedWriter import java.io.InputStreamReader import java.io.OutputStreamWriter import java.util.* fun ..
-
[백준][Kotlin] 2018번 수들의 합5백준 2023. 2. 26. 01:19
해당 문제는 투 포인터의 사용과 합계의 개념을 응용하여 작성 할 수 있는 문제였습니다. 해당 문제의 설명을 보시면 예를 들어, 15를 나타내는 방법은 15, 7+8, 4+5+6, 1+2+3+4+5의 4가지가 있다. 반면에 10을 나타내는 방법은 10, 1+2+3+4의 2가지가 있다. 라고 설명해 주고 있습니다. 만약 합계 값이 구하려는 값보다 클 경우는 작은 값을 가르키고 있는 인덱스값을 합계값에서 증가시키고, 이전에 가르키고 있던 값을 기존 합계값에서 빼주면 됩니다 ex) 1+2+3 = 6 구하려는 값 5 이라면 2+3 = 5 반대의 경우에는 큰 값을 가르키고 있는 인덱스를 증가 시킨 후 합계값에 더해 주면 됩니다. ex) 3+4+5 = 12 구하려는 값 18 이라면 3+4+5+6 = 18 하기는 작성..
-
[백준][Kotlin]1940번 주몽백준 2023. 2. 26. 01:09
해당 문제는 정렬과 투 포인터를 사용하면 풀 수 있는 문제였습니다. 재료의 개수별로 정렬을 해놓은 후 맨앞과 맨 뒤에서부터 갑옷을 만드는데 필요한 수와 동일한지 확인 후 동일하다면 result 값을 증가시면 되는 문제 였습니다. 하기는 작성한 코드와 채점 결과 입니다. import java.util.StringTokenizer fun main() { var st = StringTokenizer(readln()) val N = st.nextToken().toInt() // 재료의 개수 st = StringTokenizer(readln()) val M = st.nextToken().toInt() // 갑옷을 만드는데 필요한 수 var arr = IntArray(N + 1){0} st = StringToken..
-
[백준][Kotlin]1874번 스택 수열백준 2023. 2. 26. 01:04
해당 문제는 스택의 자료구조를 알고 있으면 매우 간단한 문제입니다. 문제를 간단히 설명하자면 스택 내부에 들어간 자료들은 오름차순을 유지해야 하며, 불가능 할 시 No을 출력 push 를 실행할때는 +, pop일때는 - 를 출력하는 문제입니다. 하기는 작성한 코드와 채점 현황 입니다. import java.io.BufferedReader import java.io.BufferedWriter import java.io.InputStreamReader import java.io.OutputStreamWriter import java.util.* fun main() { // val s = System.currentTimeMillis() var br = BufferedReader(InputStreamReader..