목록분류 전체보기 (78)
몰?.루();
fun main() { // 노드 추가 fun putNode(parent: Node, newNode: Node) { if (parent.num > newNode.num) { if (parent.left == null) parent.left = newNode else putNode(parent.left!!, newNode) } else { if (parent.right == null) parent.right = newNode else putNode(parent.right!!, newNode) } } // 전위 순회 val root = Node(readLine()!!.toInt()) while (true) { val input = readLine()?.toInt() ?: break val newNode = ..
보기 쉽게 정리된 곳이 어째 한 곳도 없어서 직접 정리합니다.맨날 토끼 언제 업데이트 됐지? 하면서 한참을 찾아야 해서...알파, 베타, 정식판만 정리합니다. 알파 이전의 프리 클래식, 클래식, 인데브, 인프데브는 (아마) 나중에 정리 예정 사소한 것까지 다 적을 수가 없기 때문에 제가 생각하기에 중요한 것만 적어 둡니다.제가 마인크래프트에서 관심 있어 하는 분야는 레드스톤, 커맨드, 야생, 스피드런, 모드이기 때문에 그 이외의 분야(특히 .발전과제, 건축, 인테리어 쪽) 아이템 추가 같은 건 생략 되어있을 가능성이 높습니다. 본 내용은 나무위키에 적힌 내용을 바탕으로 정리해놓은 것이므로 신뢰 수준은... 예... 뭐... 아시죠? 핵심 업데이트 요약버전업데이트 이름업데이트 주요 내역업데이트 날짜알파 1..
여러가지 정렬 기준에 대해 정렬하는 문제입니다. fun main() { val n = readLine()!!.toInt() val inputs = ArrayList(n) repeat(n) { val line = readLine()!!.split(" ") inputs.add(Info(line[0], line[1].toInt(), line[2].toInt(), line[3].toInt())) } // inputs.sortedBy { it.name }.sortedByDescending { it.math }.sortedBy { it.english }.sortedByDescending { it.korean }.forEach { println(it.name) } inputs.sortedWith(compareBy({..
import java.util.LinkedList fun main() { repeat(readLine()!!.toInt()) { val (a, b) = readLine()!!.split(" ").map { it.toInt() } fun bfs() { val visited = BooleanArray(10000) val queue = LinkedList() queue.add(Pair(a, "")) while (queue.isNotEmpty()) { val head = queue.poll() if (head.first == b) { // 종료 조건 println(head.second) return } if (!visited[head.first.d()]) { queue.add(Pair(head.first.d()..
코틀린에는 이미 이진탐색이 기본적으로 구현되어있습니다. fun main() { val arr = IntArray(100) { it * 2 } // [0, 2, 4, ..., 198] // 찾는 원소 있을 때 println(arr.binarySearch(100)) // 출력: 50 println(arr.binarySearch(0)) // 출력: 0 println(arr.binarySearch(36)) // 출력 18 // 찾는 원소 없을 때 println(arr.binarySearch(-5)) // 출력: -1 println(arr.binarySearch(3)) // 출력: -3 println(arr.binarySearch(199)) // 출력: -101 } .binarySearch()를 통해 이진탐색을 ..
내용에 앞서 이 포스팅은 드림이 나쁘다 아니다 이런 것을 따지기 위해 작성된 게 아니라, 스피드런 관리팀이 어떻게 그가 치트를 썼다고 확신했는지, 그 과정에서 어떠한 통계적 검증을 사용했는지 순수하게 수학적, 통계적, 컴퓨터공학적 관점에서 이 사건이 흥미로웠기 때문에 스피드런 관리팀이 사용한 통계적 검증 방법에 대해 설명하는 포스팅입니다. 이 포스팅의 내용은 다음과 같은 영상 및 자료를 기반으로 작성되었습니다. (영상) [Dream cheating scandal - explaining ALL the math simply] by Mathemaniac (영상) [Did Dream Fake His Speedruns - Official Moderator Analysis] by Geosquare (PDF) [Dr..
val n = 10000 val arr = IntArray(n) { it } repeat(n) { val a = (arr.indices).random() val b = (arr.indices).random() val temp = arr[a] arr[a] = arr[b] arr[b] = temp } arr.forEach { print("$it ") } 0부터 n - 1까지 난수를 중복없이 발생시키고 출력하는 코드입니다. 방식은 0 ~ n - 1까지 순서대로 들어가있는 IntArray를 만들고, n번만큼 랜덤하게 swap을 진행하여 마치 카드 패 섞듯 arr 함수를 엉망진창으로 만드는 방식입니다. 흔히 쓰는 랜덤값 하나 뽑고 배열에 그 값이 이미 있는 값인지 아닌지 for문 돌면서 검사하고 없으면 채택하고 ..
import java.util.PriorityQueue fun main() { // 인풋 val n = readLine()!!.toInt() val m = readLine()!!.toInt() val bus = Array(n + 1) { ArrayList() } // [0] 버림 repeat(m) { val (a, b, c) = readLine()!!.split(" ").map { it.toInt() } bus[a].add(Pair(b, c)) } val (start, end) = readLine()!!.split(" ").map { it.toInt() } // 다익스트라 알고리즘 (우선순위 큐 사용) val dist = IntArray(n + 1) { Int.MAX_VALUE } // [0] 버림 va..
무난한 백트래킹 문제인데 나온지 얼마 안 된 문제이다보니 인터넷에 코틀린 코드가 하나도 없더군요... data class food(val p: Int, val f: Int, val s: Int, val v: Int, val price: Int) fun main() { // 인풋 val n = readLine()!!.toInt() val temp = readLine()!!.split(" ").map { it.toInt() } val mp = temp[0] val mf = temp[1] val ms = temp[2] val mv = temp[3] val foods = ArrayList(n) repeat(n) { val temp = readLine()!!.split(" ").map { it.toInt() } ..
반례 찾아보려고 검색해봤더니 이 문제는 코틀린 코드가 인터넷에 하나도 없길래 저라도 올려봅니다. 굉장히 근본없는 풀이방법일 가능성이 높으니 참고용으로만 쓰시길... 112 이렇게 되어있는 전화번호를 1,1,2로 자른 후에 트리 형태로 저장하고, 1126을 저장할 때 기존에 1,1,2가 저장된 게 있으니 순서대로 따라가다가 마지막 2에서 해당 노드가 leaf 노드라는 말은 앞에서 1,1,2로 끝나는 번호가 있었다는 말이므로 NO를 출력하고 탐색을 종료합니다. 반대로 만약 1126이 먼저 들어오고 112가 나중에 들어온 경우에도 NO를 출력하고 탐색을 종료합니다. (이땐 1,1,2,6에서 2는 leaf가 아니지만 1,1,2를 넣을 때 2번이 leaf이므로 탐색이 종료됩니다.) 참고로 112가 있어도 3112..