Uknow's Lab.
article thumbnail
[백준 11279번] [Kotlin] 최대 힙
코딩테스트/Kotlin 2023. 1. 15. 17:06

https://www.acmicpc.net/problem/11279 11279번: 최대 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 난이도 : 실버 2 태그 : 자료 구조, 우선순위 큐 설명 https://uknowblog.tistory.com/126 [백준 1927번] [Kotlin] 최소 힙 https://www.acmicpc.net/problem/1927 1927번: 최소 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 ..

article thumbnail
[백준 1927번] [Kotlin] 최소 힙
코딩테스트/Kotlin 2023. 1. 15. 17:03

https://www.acmicpc.net/problem/1927 1927번: 최소 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 난이도 : 실버 2 태그 : 자료 구조, 우선순위 큐 설명 최소 힙을 사용하여 1. 배열에 자연수 x를 넣고 2.가장 작은 값을 출력후 배열에서 제거 하는 프로그램을 만드는 문제입니다. 자바와 코틀린에는 기본적으로 지원되는 PrioryQueue 자료구조가 있습니다. 말 그대로, 우선순위에 따라 하나씩 꺼내올 수 있는 큐 인데요. 만약 1, 3, 5, 2, 0, 10 순으로 넣었..

article thumbnail
[안드로이드/코틀린] 리사이클러뷰(RecylcerView)에 아이템 클릭 리스너 넣기
프레임워크/Android 2022. 12. 26. 15:22

리스트뷰와 리사이클러뷰의 아이템 클릭 리스너 ListView에 아이템 클릭 이벤트 리스너를 넣는 것은 꽤 간단했습니다. 그냥 버튼 클릭 리스너를 다는것과 같이 setOnItemClickListener를 달아주면 되니까요 하지만 RecyclerView 안에는 어떠한 itemClickListener를 찾아볼 수 없었습니다. 이는 아이템뷰를 재사용(Recylce)하는 리사이클러뷰의 특성 때문입니다. 뷰를 재사용하기 때문에, 리스트뷰보다 적은 리소스를 사용하며, 더 유연하고 자유롭지만, 마찬가지로 뷰를 재사용하기 때문에, 아이템을 클릭했을 때 이벤트를 처리하기가 어렵다고 하네요. 하지만, 방법이 없는것은 아닙니다. 저희가 직접 아이템 클릭 리스너를 구현하여 넣어주면 되니까요. 참고로 본 포스팅에서 사용하는 리사..

article thumbnail
[백준 10773번] [Kotlin] 제로
코딩테스트/Kotlin 2022. 12. 26. 14:33

https://www.acmicpc.net/problem/10773 10773번: 제로 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경 www.acmicpc.net 난이도 : 실버 4 태그 : 구현, 자료 구조, 스택 설명 ArrayList를 사용하면 쉽게 풀 수 있습니다. 0이 아닌 수가 입력으로 들어올 때엔 ArrayList에 하나씩 삽입하다가, 0이 입력으로 들어오면 ArrayList에서 마지막 원소를 빼고, 모든 입력이 들어오면 ArrayList 안에 남아있는 원소의 합을 출력하면 됩니다. 소스코드 fun main()..

article thumbnail
[백준 11399번] [Kotlin] ATM
코딩테스트/Kotlin 2022. 12. 26. 13:57

https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 난이도 : 실버 4 태그 : 그리디 알고리즘, 정렬 설명 각 사람이 돈을 인출하는데 걸리는 최소한의 시간을 찾는 문제입니다. 단순히, 각 사람의 인출시간을 오름차순으로 정렬하여 기다린 시간만큼 더해주면 됩니다. 소스코드 fun main() { val testCase = readLine()!!.toInt() val nums = readLine()!!.toString().trim().split(" ").map { i -> i.to..

article thumbnail
[백준 11653번] [Kotlin] 소인수분해
코딩테스트/Kotlin 2022. 12. 21. 01:14

https://www.acmicpc.net/problem/11653 11653번: 소인수분해 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net 난이도 : 브론즈 1 태그 : 수학, 정수론, 소수 판정 설명 N에 대해 소인수분해를 하는 문제입니다. 소인수분해 과정은 꽤 간단합니다. 60을 소인수분해 한다 했을때, 60 / 2 = 30 이며, 30 / 2 = 15 입니다. 2로는 더 이상 나눠지지 않으니 3으로 나눠봅시다. 15 / 3 = 5 이며, 더 이상 3으로 나누어지지 않고, 4로도 나누어지지 않습니다. 5 / 5 = 1 입니다. 이와 같이 60을 소인수분해 하면 2 * 2 * 3 * 5 = 60을 구할 수 있습니다. 소스코드 fun main() { v..

article thumbnail
[백준 2941번] [Python] 크로아티아 알파벳
코딩테스트/Python 2022. 12. 21. 00:50

https://www.acmicpc.net/problem/2941 2941번: 크로아티아 알파벳 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= www.acmicpc.net 난이도 : 실버 5 태그 : 구현, 문자열 설명 크로아티아 알파벳을 입력할 수가 없어 다른 글자로 표기하였습니다. 이 문제는 알파벳의 개수를 출력하는 문제이기 때문에, 굳이 특정 알파벳을 원본 알파벳으로 변경할 필요는 없습니다. 소스코드 st = input() for i in ['dz=','c=','c-','d-','lj','nj','s=','z=',]: st..

article thumbnail
[Kotlin] BigDecimal을 사용하여 매우 큰 수, 소숫점 처리하기
언어/Kotlin 2022. 12. 21. 00:34

fun main() { val n1 = 90.15f val n2 = 30.05f println(n1 / n2) } Java와 Kotlin으로 개발하는 개발자들은 소숫점을 다룰 때 골칫덩어리인 부분이 하나 있습니다. 바로 부동소숫점 오류로 인해 소숫점이 제대로 표현되지 않을 때지요. double은 float형에 비해 조금 덜하나, 부동소숫점 오류에서 완전히 자유롭진 못합니다. 또, 매우 큰 수를 다룰 때에도 자료형의 최대 / 최소 값을 넘어버리는 경우도 있습니다. 이럴때 필요한게 바로 BigDecimal 입니다. BigDecimal 이란? Decimal은 흔히 십진법, 혹은 소수라는 의미를 가지고 있습니다. 앞에 Big이 붙은 것에서 알 수 있듯이 자바 혹은 코틀린에서 큰 수를 다룰 때, 혹은 소숫점을 다..

article thumbnail
[백준 2563번] [Kotlin] 색종이
코딩테스트/Kotlin 2022. 12. 20. 23:47

https://www.acmicpc.net/problem/2563 2563번: 색종이 첫째 줄에 색종이의 수가 주어진다. 이어 둘째 줄부터 한 줄에 하나씩 색종이를 붙인 위치가 주어진다. 색종이를 붙인 위치는 두 개의 자연수로 주어지는데 첫 번째 자연수는 색종이의 왼쪽 변 www.acmicpc.net 난이도 : 실버 5 태그 : 구현 설명 처음에는 어떻게 접근할지 고민하다가, 가로 / 세로 크기가 100씩 밖에 되지 않는 작은 범위인 것을 보고, 그냥 2차원 배열 하나 생성해서 색종이로 덮여진 부분만 체크하고, 색종이로 덮인 부분을 카운트해 출력하면 되더군요. 소스코드 fun main() = with(System.`in`.bufferedReader()) { val n = readLine().toInt()..

article thumbnail
[백준 4179번] [Kotlin] 불!
코딩테스트/Kotlin 2022. 12. 14. 11:34

https://www.acmicpc.net/problem/4179 4179번: 불! 입력의 첫째 줄에는 공백으로 구분된 두 정수 R과 C가 주어진다. 단, 1 ≤ R, C ≤ 1000 이다. R은 미로 행의 개수, C는 열의 개수이다. 다음 입력으로 R줄동안 각각의 미로 행이 주어진다. 각각의 문 www.acmicpc.net 난이도 : 골드 4 태그 : 그래프 이론, 그래프 탐색, 너비 우선 탐색 설명 불이 확산되는 와중에 지훈이가 불에 닿지 않으면서 탈출할 수 있는 최소 시간을 출력하는 문제입니다. BFS를 사용해 풀이할 수 있는데, 불과 지훈이의 맵을 따로 두어, 불의 맵을 먼저 BFS 한 후, 지훈이의 맵을 탐색해가며, 각 좌표가 불이 도달하기 이전에 도달할 수 있는지 체크하면 됩니다. 소스코드 i..