목록전체 글 (119)
기록
@Test fun add() { val name = "홍길동" val number = "010-1111-1234" val expect = User(name, number) val actual = phoneBookImpl.add(name, number) assertEquals(expect, actual) } User 리스트에 새로운 User를 추가해주는 메소드를 테스트 하려니, 원하는 결과가 나오지 않았다. 둘의 객체 값의 주소가 다르다는 메시지이다. 뭐가 문제일까? class User (val name: String, val number: String) 일단 답을 먼저 말하면, 바로 User 클래스에서 equals 메소드를 오버라이드 하지 않았기 때문이다. data class User (val name..
import java.util.LinkedList import java.util.Queue fun main() { val graph = arrayOf( intArrayOf(), intArrayOf(2,3,8), intArrayOf(1,7), intArrayOf(1,4,5), intArrayOf(3,5), intArrayOf(3,4), intArrayOf(7), intArrayOf(2,6,8), intArrayOf(1,7) ) val visited = BooleanArray(graph.size){ false } bfs(graph, 1, visited) } fun bfs(graph: Array, node: Int, visited: BooleanArray) { val queue: Queue = LinkedLi..
fun main() { val graph = arrayOf( intArrayOf(), intArrayOf(2,3,8), intArrayOf(1,7), intArrayOf(1,4,5), intArrayOf(3,5), intArrayOf(3,4), intArrayOf(7), intArrayOf(2,6,8), intArrayOf(1,7) ) var visited = BooleanArray(9){ false } dfs(graph, 1, visited) } fun dfs(graph: Array, v: Int, visited: BooleanArray) { visited[v] = true print("$v ") for(node in graph[v]) { if(!visited[node]) { dfs(graph, nod..
fun main() { var n = readLine()!!.toInt() var str = "" while(n > 0) { str = (n % 2).toString() + str n /= 2 } println(str) }
fun main() { val arr = intArrayOf(2,5,3,1,6,7,0,4,8,9) for(i in 0 until arr.size - 1){ for(j in 1 until arr.size -i) { if(arr[j-1] > arr[j]) { val temp = arr[j-1] arr[j-1] = arr[j] arr[j] = temp } } } println(arr.contentToString()) }
fun main() { val arr = intArrayOf(2,5,3,1,6,7,0,4,8,9) for(i in 0 until arr.size) { var minIndex = i for(j in i+1 until arr.size) { if(arr[minIndex] > arr[j]) { minIndex = j } } val tmp = arr[i] arr[i] = arr[minIndex] arr[minIndex] = tmp } println(arr.contentToString()) } 가장 작은 데이터를 선택해 맨 앞의 데이터와 바꾸고, 그 다음 작은 데이터를 선택해 앞에서 두번째 데이터와 바꾸는 과정을 반복 현재 데이터의 상태와 상관 없이 무조건 모든 원소를 비교하고 위치를 바꾼다.
맨 왼쪽의 원소는 이미 정렬되어 있다고 가정하고, 두번째 원소부터 시작해서 왼쪽으로 순차적으로 현재 원소보다 큰 원소가 있다면 교체를 해주고, 또 다음 반복에서 그 왼쪽의 원소와 비교하여 또 큰 원소가 있다면 교체를 해주고, 이 작업을 반복하다가 마침내 현재 원소의 왼쪽 원소가 현재 원소보다 작은 경우를 만날 시에 브레이크로 중단하는 정렬 방식입니다. fun main() { val arr = intArrayOf(2,5,3,1,6,7,0,4,8,9) for(i in 1 until arr.size) { for(j in i downTo 1) { if(arr[j] < arr[j-1]) { val temp = arr[j] arr[j] = arr[j-1] arr[j-1] = temp } else break } } ..
기준데이터(피벗)를 설정하고 그 기준보다 큰 데이터와 작은 데이터의 위치를 바꾸는 방법 일반적인 상황에서 제일 많이 사용되는 정렬 알고리즘 중 하나. 평균적으로 O(NlogN)의 시간복잡도를 가지며, 최악의 경우 O(N^2)의 시간복잡도를 가진다. fun main() { val array = intArrayOf(5,7,9,0,3,1,6,2,4,8) quickSort(array, 0, array.size - 1) // array.forEach { print("$it ") } print(array.contentToString()) } fun quickSort(arr: IntArray, start: Int, end: Int) { if(start >= end) return val pivot = start var..
어느 날처럼 코딩을 하고, GitHub에 Push 하려는데 뜬금없이 에러가 났다. 뭐 이런.. 😳 status를 보니 이렇게 떴다. 아무 에러 사항이 없어 보인다. git fetch 및 git pull --rebase origin main 등 도움 될만한 명령어들을 쳐봤지만 별다른 수확이 없던 도중... 혹시나 해서 GitHub Status 페이지를 확인해보니 두둥 GitHub 서버에서 오류가 발생했다고 한다! 금방 다시 Push를 해보니 정상적으로 작동함을 확인할 수 있었다. 아무리 봐도 문제를 못찾겠을 땐 GitHub Status 페이지를 확인해 보자.
Hilt란? 힐트(Hilt)는 안드로이드에서 의존성 관리를(Dependency Injection, DI) 쉽게 해주는 라이브러리입니다. '의존'이란 한 클래스가 다른 클래스를 참고한다는 뜻인데, 개발을 하다보면 여러 클래스끼리 연결되는 경우가 흔하게 있습니다. 한 클래스가 준비되어야 다른 클래스도 쓸 수 있는 경우이지요. 2개 정도의 클래스면 손으로 클래스끼리 연결을 해 줄 수도 있지만, 클래스의 수가 많아지고 연결이 여러곳에서 생기면 일일이 객체를 만드는 것도 번거로운 일이 됩니다. 이러한 어려움을 해결하기 위해 Hilt 라이브러리를 사용하여 의존성을 관리할 수 있습니다. Hilt의 이점 Hilt를 사용하면 안드로이드 기본 컴포넌트를 자동으로 주입해줍니다. (e.g. Activity, Fragment,..