목록분류 전체보기 (78)
몰?.루();
현재 엄청나게 긴 커맨드를 입력한 상태에서 "아 아니다, 걍 지워야겠다"라고 생각했을 때 지우는 게 은근히 귀찮습니다. 윈도우 환경이었으면 그냥 Shift + Home 눌러서 한 줄 다 선택해서 Delete 하겠지만 유감스럽게도 터미널에서는 Ctrl + A도 안 되고 Shift + Home도 안 됩니다. 근데 그냥 Ctrl + U 하면 현재 커맨드 다 삭제 됩니다. 참고로 한 단어만 삭제할 때는 Ctrl + W입니다.
안드로이드 스튜디오의 terminal을 git bash로 설정해놓은 경우 한글을 입력하는 건 그럭저럭 잘 되는데 지울 때 정말 이상하게 지워집니다. 평소에는 크게 문제가 되지 않는데 git commit을 할 때 커밋 메세지를 한글로 남겨야하기 때문에 이 버그는 굉장히 짜증납니다. 아무리 검색해도 해결 방법이 안 나오다가 그냥 우연히 이것저것 해보다가 해결법을 발견해서 공유합니다. 설정(Ctrl + Atl + S)에서 Tools - Terminal - Shell path 에서 {bash 경로} 뒤에 --login을 덧붙여주고 OK를 눌러서 설정창을 끄고 나서 터미널을 종료시켰다가 다시 켜면 한글 문제가 해결됩니다. 대체 --login을 붙였는데 왜 해결되는거고 무슨 역할을 하는 건지는 모르겠지만 일단 문제..
뭐만하면 띠리링! 경고 비프음이 나서 스트레스 쌓여서 없애는 법을 찾아봤더니 방법이 있더군요. 1. bash에서 비프음 없애기 sudo vim /etc/inputrc 위 명령어 입력하면 루트 권한 비밀번호를 요구하는데 비밀번호 입력을 마치고 나면 아래와 같은 창이 뜹니다. 중간에 파란 글자 중에 자세히 보면 # set bell-style none이 있는데 앞에 #을 지우고 저장하고 나옵니다. (i 눌러서 insert 모드로 변경한 후 방향키로 이동 후 # 지우고 Esc 누르고 :wq 입력 후 엔터) 이렇게 하면 일단 bash에서는 띠리링 소리가 안 들리게 됩니다. (터미널 껐다켜야 적용됨) 2. vim에서 비프음 없애기 bash와 vim 따로 작업 해줘야합니다. (참고로 vim은 리눅스의 메모장입니다.)..
두괄식으로 결론부터 조지자면 // 액티비티에 이 코드 삽입 val fragment = supportFragmentManager.findFragmentById(R.id.fragment_container) as MyFragment fragment.myFragmentFuncion() 이렇게 하시면 됩니다. 메인 액티비티 소스 코드(MainActivity.kt) package com.example.test import android.os.Bundle import androidx.appcompat.app.AppCompatActivity class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { supe..
코틀린에는 확장 함수가 존재합니다. 이미 있는 클래스에 내가 원하는 기능의 함수를 추가할 수 있습니다. fun String.isHello(): Boolean { return (this == "hello") } 예를 들어 위와 같이 어떤 문자열이 "hello"인지 판단해주는 아주 쓸모 없는 확장 함수를 제가 직접 만들 수 있습니다. 이렇게 확장 함수를 만들어놓으면 "hello".isHello() // true "hi".isHello() // false 이런 식으로 String 뒤에 점(.)을 붙이고 isHello()를 해서 마치 코틀린 자체에서 isHello라는 String 함수를 추가해놓은 것처럼 사용할 수 있습니다. 근데 이 확장 함수 기능은 자바에는 없습니다. 자바 파일에 가서 아무리 "hello"...
네이버 웨일에서 우클릭을 하면 번역 버튼이 있습니다. 근데 상당히 아래 쪽에 위치해서 굉장히 귀찮습니다. 저만 그런 게 아니었는지 웨일 고객센터 문의글을 봐도 번역 단축키를 추가해달라는 글이 정말 많더라구요. 결론부터 말하자면 네이버 웨일 자체 기능에선 단축키를 지원하지 않습니다. 그래서 저는 다른 프로그램을 깔아서 해결했습니다. 영어 -> 한국어 -> 다시 영어로 번역 버튼을 직접 누르지 않고도 하는 모습을 볼 수 있습니다. 사실 안 누르는 건 아니고 엄청나게 빠른 속도로 번역을 누르고 다시 돌아오는 겁니다. 매크로이고, 오토핫키 프로그램을 이용했습니다. 오토핫키는 구글에서 검색해서 다운로드 받을 수 있습니다. 오토핫키를 받으셨으면 제 스크립트도 다운로드 받습니다. 압축 풀면 스크립트 파일(.ahk)이..
코틀린에는 스코프 함수 5형제가 있습니다. 알아두면 매우 유용하지만 그만큼 헷갈리는 친구들이기도 하기 때문에 정리해보겠습니다. 키워드 객체 참조 리턴값 .let it 마지막 줄 .also it 참조 객체 .run this 마지막 줄 with this 마지막 줄 .apply this 참조 객체 이미 스코프 함수를 아시는데 잠깐 까먹은 분들은 위의 표만으로 충분하지만 처음보면 뭔 소린지 알 수 없기 때문에 예시를 들어보겠습니다. .let let의 객체 참조는 it을 쓰고 리턴값은 스코프 마지막 줄입니다. 보통 null-check를 할 때 많이 씁니다 let을 사용하지 않고는 코드를 다음과 같이 써야합니다. val num: Int? = getNumberFromServer() // 서버로부터 오는 값 var i..
미로를 만드는 알고리즘은 정말 많습니다. 하지만 그 중에선 미로같이 생기지 않은 미로를 만드는 알고리즘도 정말 많습니다. 이런 모양은 분명 미로긴한데 미로라고 하기엔 너무 이상하게 생겼습니다. 위키백과(https://en.wikipedia.org/wiki/Maze_generation_algorithm)에 갖가지 방법이 소개되어있지만 하나같이 설명이 개떡같이 되어있으며 심지어는 그 개떡같은 설명을 찰떡같이 알아듣고 꾸역꾸역 구현해도 이상한 결과가 나오기도 합니다. 위키백과에 설명되어있는 Randomized Prim's algorithm(랜덤 프림 알고리즘)을 따라해서 구현한 한 사람은 자신이 구현한 미로가 이따구로 나온다면서 스택오버플로우에 질문 글(https://stackoverflow.com/quest..
Int에 짝수인지 확인하는 함수를 추가하고 싶을 때 fun Int.isEven(): Boolean { return (this % 2) == 0 } fun main() { println(4.isEven()) // true } 이런 식으로 Int형에 .isEven() 함수를 추가해 쓸 수 있습니다. isEven() 함수가 단순한 1줄짜리 return 함수이므로 코틀린 문법에 의해 좀 더 줄일 수 있습니다. fun Int.isEven() = ((this % 2) == 0) 참고로 이런 기능을 Kotlin의 Extension이라고 하며 Java에는 없는 Kotlin만의 기능입니다. Java에서는 이런 걸 하려면 아예 Integer 클래스를 상속받는 새로운 클래스를 만들어서 isEven() 함수를 그 클래스에 넣..
fun main() { val (n, s) = readln().split(" ").map { it.toInt() } val inputs = readln().split(" ").map { it.toInt() } dfs(null, inputs, n, s, 0) println(answer) } var answer = 0 fun dfs(sum: Int?, inputs: List, n: Int, s: Int, startIndex: Int) { if (sum == s) { answer++ } for (i in startIndex until n) { dfs((sum ?: 0) + inputs[i], inputs, n, s, i + 1) } } 무난한 백트래킹 문제이므로 dfs를 이용해서 풀 수 있습니다. 다만 주의해..