목록분류 전체보기 (78)
몰?.루();
마인크래프트 스피드런을 배우는데 외워야할 숫자가 너무 많아서 포스팅에 써두기로... 나의 마우스 감도39% 100fov 다이아 y 높이1.17 이전: 5이 가장 많지만 용암도 많으므로 11이 안정적1.18 이후: -54 고대잔해 네더라이트 y 높이15 buried treasure(땅에 묻힌 보물) 상자 위치청크 좌표 (9, 9) 난파선 상자 개수3개*선수 부분 1개 (음식 상자)*선미 부분 2개 (1층 선미 보물지도 상자, 2층 선미 광물 상자) 북쪽 난파선난파선의 선수 부분이 북쪽을 향할 경우 높은 확률로 난파선에서 아래쪽으로 팠을 때 용암이 존재 바스티온 존재 여부 확인법방법 2개 존재1. 네더 들어가자마자 디버그 스크린을 확인한다. (보통 오버월드에서 미리 F3 눌러놓고 포탈 탄 다음 네더 도착..
백준에서 가장 곤란한 점 중 하나는 틀린 경우 틀렸습니다. 라고만 알려주고 어떤 입력에서 틀렸는지 알려주지 않는다는 점입니다. 이는 비단 백준만의 문제가 아니라 거의 모든 온라인 저지 사이트가 그렇습니다. 해당 코드가 어떤 인풋에서 틀렸는지를 알려주면, 그 사이트에서 사용하는 테스트 케이스가 뭐가 있는지 모두 알아낼 수 있다는 뜻이고, 그럼 그냥 알고리즘이고 뭐고 if문으로 모든 input마다 분기를 나눠서 단순히 정답을 print해버리면 모든 문제가 간단히 파훼 되어버리기 때문에 알려주지 않습니다. 그 덕분에 순수하게 내 코드가 왜 틀렸는지, 반례가 뭔지 알고 싶은 사람들에겐 답답한 상황이 나옵니다. 그래서 제가 쓰는 방법은 인풋을 랜덤하게 대입하고, 제 코드랑 인터넷에 있는 정답 코드랑 비교해서 다른..
정말 간단한 문제라서 슈루룩 풀어버리고 다음 문제로 넘어가려고 했는데 이게 웬 걸? 시간 초과가 떴습니다.. 처음엔 그래서 그냥 출력 문젠가 싶어서 println을 BufferedWriter로 바꾸어 보았는데도 시간 초과가 뜨더군요. 다시보니 문제 제한 시간이 1초뿐이고 입력은 10만 개까지도 들어와서 그게 문제였습니다. 그래서 고쳐서 낸 코드는 다음과 같습니다. fun main() { readLine() // n val arr1 = readLine()!!.split(" ").sorted() readLine() // m val arr2 = readLine()!!.split(" ").map { if (arr1.binarySearch(it) >= 0) 1 else 0 } arr2.forEach { print..
최근에 새로 생긴 취미가 있는데 마인크래프트 스피드런 공부입니다. 단순히 빠르게 하는 종목인 줄 알았는데 빠르게 하기 위해서 마인크래프트와 Java 언어의 알고리즘에 대해서 굉장히 많은 연구와 자료가 있더라구요. 그 점이 흥미로워서 공부를 하다보니 외울 게 너무 많아서 기록용으로 남겨볼까 합니다. 참고로 버전은 스피드런 대표 버전인 1.16.1 버전 기준입니다. 특히 지하 유적Stronghold에서 포탈 방Portal Room을 찾는 것은 비단 스피드러너뿐만 아니라, 일반 마인크래프트 유저들에게도 도움이 되는 정보 중 하나라고 생각합니다. 실제로 엔더눈으로 유적까진 찾았는데 유적 안에서 길을 잃고 말 그대로 2시간 이상 쓰는 경우도 정말 많거든요. 선 요약 후 설명 엔더 눈을 던져서 엔더 눈이 땅으로 들..
구글에 검색해봤는데 이 문제 코틀린 코드는 정말 찾아보기 힘들더라구요. 특히 그나마 몇 개 있는 코드들도 Java스러운 느낌이 강하게 드는 코드라 코틀린스럽게 짜본 코드를 공유 및 개인 저장 차원에서 올려봅니다. import java.util.PriorityQueue const val INF = 1000000 fun main() { // 1. 인풋 val (v, e) = readLine()!!.split(" ").map { it.toInt() } val start = readLine()!!.toInt() val edges = Array(v + 1) { ArrayList() } val dist = IntArray(v + 1) { INF } // start에서 (여기저기 거쳐서) i에 도착할 때 최소 비용,..
학부생 때는 이걸 C언어로 하다보니 DFS, BFS 구현은 둘째치더라도 인풋을 받아서 배열에 넣는 과정조차 정말 오래걸렸습니다. 근데 확실히 코틀린으로 하니까 인풋을 배열에 넣는 건 정말 쉬웠습니다. 제가 코틀린을 좋아하는 이유기도 합니다. 입력 // 입력 val inputs = """ 15 16 1 2 1 8 1 9 2 3 2 7 2 5 3 4 3 6 4 5 9 10 9 15 9 13 10 11 10 12 13 12 13 14 """.trimIndent().lines() println("============= inputs =============") inputs.forEach { println(it) } // 입력을 배열로 저장 val (v, e) = inputs[0].split(" ").map { ..
"ajvbieofsodfsddasoidjqlwnvsc" 여기서 d의 개수만 알고 싶을 때 val myString = "ajvbieofsodfsddasoidjqlwnvsc" myString.count { it == 'd' } // 4 몰랐는데 count에 람다식을 통해서 특정 문자 개수만 셀 수 있었습니다. (항상 문자열.count()로 인자 없이 그냥 문자열 개수 쓸 때만 써서 몰랐...) 같은 원리로 Int형에서 특정 숫자가 몇 개 있는지 알아낼 때도 사용할 수 있습니다. 단순히 그냥 Int를 String으로 변환하고, 같은 방법을 쓰면 됩니다. val myInt = 12312312542343212 myInt.toString().count { it == '2' } // 6 Int를 toString으로 ..
알고리즘 문제를 코틀린으로 풀고, 다른 사람들의 풀이법을 보다보면 저는 Array로 정수 배열을 저장하는데 사람들은 IntArray로 정수 배열을 저장하는 경우가 많았습니다. 무슨 차이가 있을까 싶어서 찾아봤는데 한국엔 자료가 잘 없어서 여기저기서 찾은 정보들을 취합해서 정리해보았습니다. 결론부터 말하자면 IntArray가 Array보다 미세하게 더 좋습니다. 자바 바이트 코드로 저장될 때가 다릅니다 // 코틀린 코드 fun main() { val a = IntArray(5) val b = Array(5) { 0 } } // 위 코틀린 코드를 자바로 변환시 public static final void main() { int[] a = new int[5]; Integer[] b = new Integer[5..
코틀린에는 배열에 쓸 수 있는 여러가지 컬렉션 관련 함수들이 있는데 그 중에서 가장 유용한 게 filter와 map이 아닐까 싶습니다. List, MutableList, 일반적인 Array, ArrayList 등 다양한 컬렉션에서 쓸 수 있습니다. filter 사용법 fun main() { val arr = listOf(1, 2, 3, 4, 5, 6, 7, 8) val arr2 = arr.filter { it % 2 == 0 } // arr에서 짝수인 애들만 남겨서 arr2에 저장 println(arr) // [1, 2, 3, 4, 5, 6, 7, 8] println(arr2) // [2, 4, 6, 8] } filter는 이름대로 특정 원소만 필터링해서 return하는 역할입니다. 원래 변수엔 영향을 ..
갤럭시 Z 플립3 커버 디스플레이에 넣을 수 있는 움짤 규격 (2022년 1월 기준) 확장자 gif만 (WebP, WebM, mp4 등 미지원) 크기 딱히 제한은 없으나 커버 디스플레이가 1.92 : 1 비율이므로 그 비율에 맞추는 것이 좋음 (픽셀 제한은 딱히 없지만 해상도 높아봤자 용량만 커져서 적용 불가능할 수도 있으므로 어차피 작은 화면인거 높이 300px에 가로 길이는 1.92배만 되어도 충분) 용량 정확히 몇 인지 모르겠으나 해상도를 높이면 빠꾸 먹는 걸로 봐서 용량 제한이 있긴 있음. 꿀캠으로 높이 300px에 30fps, 5초 이내로 찍으면 용량 무난하게 넘어가짐. 현재 설정해놓은 것 중 가장 큰 용량은 12MB 시간 4.99초 (5.0초 이상 불가능, 5초 미만의 짧은 영상 예를 들어 3..