목록프로그래밍 (38)
몰?.루();

학부생 때는 이걸 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하는 역할입니다. 원래 변수엔 영향을 ..

이런 게 AlertDialog입니다. 흔히 '대화상자'라고 많이 표현합니다. Dialog 아래에 AlertDialog를 포함하여 DatePickerDialog, TimePickerDialog 같은 게 있습니다. AlertDialog는 위의 사진처럼 단순한 대화상자를 띄우기에 좋은 클래스입니다. DatePickerDialog는 날짜를 지정해야하는 대화상자를 띄우기에 좋고 TimePickerDialog는 시간을 지정해야하는 대화상자에 띄우기 좋다. 알람앱 그런 곳에서 많이 쓸 거 같습니다. Dialog는 가장 최상위의 클래스이지만 구글 문서에 따르면 Dialog를 직접 인스턴스화 하는 것은 하지말라고 합니다. AlertDialog를 쓰거나, 자신의 커스텀 다이얼로그를 만들 때만 Dialog를 상속해서 쓰라고..

자바8 이전의 옛날 문법이 익숙하다보니 코틀린은 물론이고 최근의 자바 문법들도 익숙하지 않습니다. 그 중에서 특히 적응 안 되는 게 람다라서 정리해보기로 했습니다. 특히 많이 쓰이는 setOnClickListener를 통해서 람다와 SAM(Single Abstract Method)에 대해 정리해보겠습니다. // 코틀린에서 가장 흔하게 볼 수 있는 코드 val myButton = Button(this) myButton.setOnClickListener { println(it.id) // 버튼이 눌리면 버튼 자신의 id를 출력 } 버튼을 하나 선언하고 그 버튼을 누르면 버튼 자신의 id를 출력하는 아주 간단한 코드입니다. 아주 간단하지만 제 입장에서는 너무 간단해서 오히려 이해할 수가 없었습니다. 제가 익숙..
만들고 있는 어플에서 화면을 끄는 기능을 넣어보려고 했다. 당연히 메소드하나로 굉장히 쉽게 구현이 가능할 것이라 생각했고 실제로 구글에서 Android screen off 같은 검색어로 검색하면 굉장히 간단해보이는 코드가 검색된다. PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "tag"); wl.acquire(); wl.release(); 가장 유명한 Screen off 코드.그런데 이게 어찌된 것인지 모르겠지만 내 휴대폰은 저 코드가 먹히지 않았다. 솔직히 아직까지도 이유를 알 수가 없..
매우 짧은 코드이지만 자주 까먹어서... Intent intent = new Intent(MainActivity.this, 클래스이름.class); startActivity(intent); intent 변수 선언을 뺀다면야 한 줄만에 되는 짧은 코드이다.만약 해당 클래스를 찾을 수 없다는 오류가 발생하면서 어플리케이션이 강제 종료된다면 클래스 이름에 오타는 없는지 먼저 확인하고 오타가 없다면 Manifast.xml에 액티비티가 등록되어있는지 확인해야 한다. 액티비티는 무조건 Manifast.xml에 등록되어 있어야한다.