본문 바로가기

분류 전체보기

(55)
백준 1068 코틀린 문제를 잘 못 읽어서 애를 먹었다. 하나의 노드에 여러개의 자식노드가 존재 가능하고(이진으로 착각ㅠ) 부모노드의 자식이 하나인데 삭제 되었을 경우 부모 노드 또한 카운트에 속하는 경우를 체크해야 한다. remove 이후로는 탐색을 안하기 위해서 작성한 건데 급박한 시험의 경우 그냥 삭제를 해버리고 노드를 재탐색 하는게 좋을 것 같다. var count = 0 val list = ArrayList() fun main(args: Array) { val n = readLine()!!.toInt() val arr = readLine()!!.split(" ") val remove = readLine()!!.toInt() var root = 0 for (i in 0 until n) { list.add(Node(i ..
안드로이드 postValue protected void postValue(T value) { boolean postTask; synchronized (mDataLock) { postTask = mPendingData == NOT_SET; mPendingData = value; } if (!postTask) { return; } ArchTaskExecutor.getInstance().postToMainThread(mPostValueRunnable); } postValue는 위와 같은 식으로 구성되어 있다. 네트워크 통신후 livedata와 databinding을 통해 UI를 수정하려는 경우 Main Thread 사용을 위해 setValue 대신 postValue를 사용해주어야 한다.
JVM JVM이란 특정 플랫폼에 구애받지 않고 자바 소스로 개발한 프로그램을 컴파일하여 만들어지는 바이트코드를 실행시키는 가상머신을 말한다. 가비지컬렉터 동적으로 할당된 메모리(heap)의 영역 중 사용하지 않는 영역을 해제하는 것을 말한다. 메소드가 실행되면 스택과 힙(큐)에 데이터가 저장되는데 오브젝트의 경우 stack에 주소값이 저장되고 힙에 데이터가 저장된다.(스택: 주소값 저장, 힙(큐): 데이터 저장) 스택에 저장된 테이터들은 메스드가 끝나는 동시에 사라지고 이때 힙에는 데이터가 남아있지만 스택에서 주소값 정보가 사라진다. 가비지컬렉터는 이때 스택에 데이터가(주소값) 가리키는 정보가 큐에 없을 경우 데이트를 삭제하는 것 을 말한다. 가비지 컬렉터 과정 1. 가비지 컬렉터가 Stack의 모든 변수를 스..
primitive wrapper 변수는 타입이 있으며 타입에 따라 기본형(primitive)과 참조형(refrence) 2가지로 나눌 수 있다. 기본형은 실제 data를 저장하고 참조형은 아래와 같이 data값이 저장되어 있는 주소를 값으로 가지고 이를 wrapper 클래스라고 부른다. public final class Integer extends Number implements Comparable { ... private int value; ... } 기본형과 참조형 기본형(primitive) 참조형(wrapper) boolean Boolean char Char byte Byte short Short int Integer long Long folat Float double Double 코틀린은 기본형과 참조형 타입을 따로 구분하지 않..
viewmodel에서 R.string 처리하기 viewmodel에서 livedata(Int)를 통해 R.string값을 데이터 바인딩 하여 xml에서 context.getString(해당하는 값) 이런식으로 사용하면 된다. ex) viewmodel) val textResource = MutableLivdata(R.string.hello) layout) android:text="@{context.getString(viewModel.textResource)}"
프로그래머스 길 찾기 게임 class Solution { fun solution(nodeinfo: Array): Array { val list = ArrayList() for (i in nodeinfo.indices) { val info = nodeinfo[i] list.add(Point(info[0],info[1], i+1)) } list.sort() val binary = Binary(Node(list[0])) //이진트리 루트 for (i in 1 until list.size) { binary.insert(list[i]) //인지트리의 넣기 } binary.preOrder(binary.root) binary.postOrder(binary.root) val answer = arrayOf(binary.preList.toIntAr..
프로그래머스 가사검색 코틀린 class Solution { fun solution(words: Array, queries: Array): IntArray { val answer = IntArray(queries.size) val root = Trie() val tail = Trie() //역으로 탐색하기 위해 for (word in words) { root.insert(word) tail.insert(word.reversed()) //역으로 입력 } for (i in queries.indices) { if (queries[i][0]!='?') { answer[i] = root.find(queries[i]) } else { answer[i] = tail.find(queries[i].reversed()) } } retur..
카카오 블라인드 2020 문자열 압축 코틀린 fun solution(s: String): Int { val length = s.length var min = length val mid = length/2+1 for (cnt in 1 until mid+1) { //압추크기가 반을 넘을 수 없어서 var len = length var i =cnt var num = 1 while (i=length-cnt+1 &&num!=1) { len+= num.toString().length //마지막에 중복 숫자를 더해줌 } } if (min>len) { min =len } } return min }