๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ

๐Ÿ’ป ๊ฐœ๋ฐœ/์˜ค๋Š˜์˜ ์‚ฝ์งˆ

[Android / Kotlin] Failed to call observer method

์˜ค๋ฅ˜ ๋ฐœ์ƒ Databinding + ViewModel + LiveData ๋กœ ๊ฐ„๋‹จํ•œ MVVM ์˜ˆ์ œ๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด Databinding ์œผ๋กœ ํ‘œํ˜„ํ•  ๋ณ€์ˆ˜(?)๋ฅผ layout ์•ˆ์— ๋ธ”๋Ÿญ์— ๋„ฃ์–ด์คฌ๋”๋‹ˆ ๋ฐœ์ƒํ•œ ์˜ค๋ฅ˜ ์˜ค๋ฅ˜ ๋‚ด์šฉ ํ•ด๊ฒฐ String ์œผ๋กœ ๋ณ€ํ™˜ํ•˜์ง€ ์•Š์•„์„œ ๋ฐœ์ƒํ•œ ๋ฌธ์ œ... ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹... toString() ์„ ํ•ด์คฌ๋”๋‹ˆ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ–ˆ๋‹ค. ์ฐธ๊ณ  MVVM ์˜ˆ์ œ StackOverFlow

โœ๏ธ ์ฝ”ํ…Œ ์ค€๋น„/Back Tracking

[๋ฐฑํŠธ๋ž˜ํ‚น / Kotlin] BOJ 2580 - ์Šค๋„์ฟ 

๋ฌธ์ œ ํ’€์ด ์–ธ์–ด Kotlin ์ฝ”๋“œ import java.util.* import kotlin.system.exitProcess lateinit var board: Array fun main() = with(Scanner(System.`in`)) { board = Array(9) { Array(9) { 0 } } // ์ฃผ์–ด์ง„ ๋ฐฐ์—ด์„ ์ž…๋ ฅ๋ฐ›์Œ for (i in 0 until 9) { for (j in 0 until 9) { board[i][j] = nextInt() } } // (0, 0) ๋ถ€ํ„ฐ ์‹œ์ž‘ sudoku(0, 0) } fun check(row: Int, col: Int, value: Int): Boolean { // 1. ๊ฐ™์€ ํ–‰, ๋‹ค๋ฅธ ์—ด์— ๊ฐ™์€ ๊ฐ’์ด ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธ for (i in 0 unti..

โœ๏ธ ์ฝ”ํ…Œ ์ค€๋น„/Back Tracking

[๋ฐฑํŠธ๋ž˜ํ‚น / Kotlin] BOJ 9663 - N Queen

๋ฌธ์ œ ํ’€์ด ์–ธ์–ด Kotlin ์ฝ”๋“œ import java.util.* import kotlin.math.abs lateinit var array: Array var n = 0 var cnt = 0 fun main() = with(Scanner(System.`in`)) { n = nextInt() array = Array(n) { 0 } nQueen(0) println(cnt) } fun nQueen(depth: Int) { // depth๋Š” row if (depth == n) { println(depth) cnt++ return } for (i in 0 until n) { // i๋Š” col array[depth] = i if (check(depth)) { nQueen(depth + 1) } } } fun ..

โœ๏ธ ์ฝ”ํ…Œ ์ค€๋น„/Back Tracking

[๋ฐฑํŠธ๋ž˜ํ‚น / Kotlin] BOJ 15649 ~ 15652 - N๊ณผ M (1 ~ 4)

N๊ณผ M (1) ๋ฌธ์ œ ํ’€์ด ์–ธ์–ด Kotlin ์ฝ”๋“œ import java.util.* lateinit var visit: Array lateinit var input: Array var n: Int = 0 var m: Int = 0 fun main() = with(Scanner(System.`in`)) { n = nextInt() m = nextInt() visit = Array(n + 1) { 0 } input = Array(n + 1) { 0 } dfs(0) } fun dfs(depth: Int) { if (depth == m) { for (i in 0 until m) { print("${input[i]} ") } println() return } for (i in 0 until n) { if (vis..

๐Ÿ’ป ๊ฐœ๋ฐœ/iOS

[TIL] 22.03.23

๊ณต๋ถ€ํ•œ ๊ฒƒ ์ฝ”๋ฃจํ‹ด ์•Œ๊ฒŒ๋œ ๊ฒƒ 1. ์ฝ”๋ฃจํ‹ด ์–ด์ œ์— ์ด์–ด ์ฝ”๋ฃจํ‹ด ์— ๋Œ€ํ•ด ํ•™์Šตํ–ˆ๋‹ค. ์ฝ”๋ฃจํ‹ด์€ ์ฝ”๋ฃจํ‹ด ์Šค์ฝ”ํ”„ ๋ฅผ ํ†ตํ•ด์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฝ”๋ฃจํ‹ด ์Šค์ฝ”ํ”„ ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ ๋„ ์ฝ”๋ฃจํ‹ด์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ด๋Ÿฐ ๊ฒฝ์šฐ์— ์ž‘์—…์ด ์ข…๋ฃŒ๋œ ์ฝ”๋ฃจํ‹ด์— ๋Œ€ํ•ด ๋ณ„๋„์˜ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ค˜์•ผ ํ•œ๋‹ค. Coroutine Scope Coroutine Scope ๋Š” ์ฝ”๋ฃจํ‹ด์˜ ๋ฒ”์œ„๋ฅผ ์ •์˜ํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค ์ด๋‹ค. ๋ง ๊ทธ๋Œ€๋กœ ์ฝ”๋ฃจํ‹ด์ด ์‹คํ–‰๋˜๋Š” ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•œ๋‹ค. ๋ชจ๋“  ์ฝ”๋ฃจํ‹ด์€ Scope ๋‚ด์—์„œ ์‹คํ–‰๋˜์–ด์•ผ ํ•˜๊ณ  ์•กํ‹ฐ๋น„ํ‹ฐ ๋‚˜ ํ”„๋ž˜๊ทธ๋จผํŠธ ์˜ ์ƒ๋ช…์ฃผ๊ธฐ ์— ๋”ฐ๋ผ ์ฝ”๋ฃจํ‹ด ์„ ์ทจ์†Œ ํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ๋ฆญ ์„ ๋ฐฉ์ง€ํ•œ๋‹ค. Global Scope ์™€ Coroutine Scope ๊ฐ€ ์กด์žฌํ•œ๋‹ค. 1. Global Scope : ์•ฑ์˜ ์ƒ๋ช…์ฃผ๊ธฐ์™€ ํ•จ๊ป˜ ๋™์ž‘ํ•˜๊ธฐ์— ๋ณ„๋„์˜ ์ƒ๋ช… ์ฃผ๊ธฐ ๊ด€๋ฆฌ๊ฐ€ ..

โœ๏ธ ์ฝ”ํ…Œ ์ค€๋น„/String

[๋ฌธ์ž์—ด / Kotlin] 2019 ์นด์นด์˜ค ๊ฐœ๋ฐœ์ž ๊ฒจ์šธ ์ธํ„ด์‹ญ - ํŠœํ”Œ

๋ฌธ์ œ ํ’€์ด ์–ธ์–ด Kotlin ์ฝ”๋“œ class Solution { fun solution(s: String): IntArray { val string = s.slice(2 until s.length - 2) val array = string.split("},{") val sortedArray = array.sortedBy { it.length } val answer = mutableListOf() for (e in sortedArray) { val splitString = e.split(',') for (num in splitString) { if (answer.contains(num.toInt()).not()) answer.add(num.toInt()) } } return answer.toIntArray..

๐Ÿ’ป ๊ฐœ๋ฐœ/iOS

[TIL] 22.03.22

๊ณต๋ถ€ํ•œ ๊ฒƒ ์ฝ”๋ฃจํ‹ด ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค 1๋ฌธ์ œ ์•Œ๊ฒŒ๋œ ๊ฒƒ 1. ์ฝ”๋ฃจํ‹ด ์ฝ”๋ฃจํ‹ด ์€ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๋ฅผ ์œ„ํ•ด ์ฝ”ํ‹€๋ฆฐ ์—์„œ ์ง€์›ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ด๋‹ค. ์šฐ์„  ๋™๊ธฐ ์™€ ๋น„๋™๊ธฐ ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž. ๋™๊ธฐ๋Š” ์‘๋‹ต์„ ์š”์ฒญํ–ˆ์„ ๋•Œ ๋ฐ˜ํ™˜ ๊ฐ’์„ ์–ป๊ธฐ ์ „๊นŒ์ง€ ๋Œ€๊ธฐํ•˜๋Š” ๊ฒƒ์„ ๋œปํ•˜๊ณ , ๋น„๋™๊ธฐ๋Š” ๋Œ€๊ธฐ์‹œ๊ฐ„ ๋ณ„๋„์˜ Task๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์„ ๋œปํ•œ๋‹ค. ๋™์‹œ์„ฑ ์ฒ˜๋ฆฌ ์ž‘๋…„ OS ์ˆ˜์—…์„ ๋“ค์„ ๋•Œ ๋™์‹œ์„ฑ ์ฒ˜๋ฆฌ ์— ๋Œ€ํ•ด์„œ ๋ฐฐ์› ์—ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๊ฐ‘์ž๊ธฐ ๋™์‹œ์„ฑ ์ฒ˜๋ฆฌ๋ฅผ ์™œ ์–˜๊ธฐํ•˜๋Š๋ƒ, ๋™์‹œ์„ฑ ์ฒ˜๋ฆฌ๊ฐ€ ๋น„๋™๊ธฐ์˜ ๊ฐœ๋…์ด ์ ์šฉ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋™์‹œ์„ฑ ์ฒ˜๋ฆฌ๋Š” ๋ง ๊ทธ๋Œ€๋กœ ๋™์‹œ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ์‹คํ–‰๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ๊ฒƒ์ด๋‹ค. (Context Switching ์ด ๋ฐœ์ƒํ•œ๋‹ค.) ์‹ฑ๊ธ€ ์ฝ”์–ด ์—์„œ ๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋“œ ๋ฅผ ํ†ตํ•ด์„œ ์ด๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ๋‹ค. ์“ฐ๋ ˆ๋“œ ๋™์‹œ์„ฑ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด์„œ..

๐Ÿ’ป ๊ฐœ๋ฐœ/iOS

[TIL] 22.03.20

๊ณต๋ถ€ํ•œ ๊ฒƒ ์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐ•์˜ ์ˆ˜๊ฐ• ์˜์กด์„ฑ ์ฃผ์ž… ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค 1๋ฌธ์ œ ์•Œ๊ฒŒ๋œ ๊ฒƒ 1. ์˜์กด์„ฑ ์ฃผ์ž… (Dependancy Injection) ์ด๋ฒˆ์— ์˜์กด์„ฑ ์ฃผ์ž…์ด๋ผ๋Š” ๊ฒƒ์„ ์ฒ˜์Œ ์ ‘ํ•˜๊ฒŒ ๋๋‹ค. ์˜์กด์„ฑ ์ด๋ผ๋Š” ๋‹จ์–ด ์ž์ฒด๋ฅผ build.gradle ์— ์„ ์–ธํ•˜๋Š” implementation 'org.jetbrains... ์ฒ˜๋Ÿผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ถ”๊ฐ€ ๋ง๊ณ ๋Š” ์ ‘ํ•ด๋ณธ ์ ์ด ์—†์—ˆ๋‹ค. ์•„๋ฌดํŠผ ์˜ค๋Š˜ ๊ฐ•์˜ ๋ฅผ ์ˆ˜๊ฐ•ํ•˜๋ฉด์„œ ์˜์กด์„ฑ ์ฃผ์ž… ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ Koin ์„ ์ ‘ํ–ˆ๊ณ  ์ด์— ๊ด€ํ•ด์„œ ์ข€ ๋” ์ฐพ์•„๋ณด๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์กŒ๋‹ค. ์˜์กด์„ฑ ์ฃผ์ž… ์ด๋ผ๋Š” ๊ฐœ๋… ์ž์ฒด๋Š” ์–ด๋ ต์ง€ ์•Š์•˜๋‹ค. ์šฐ์„  ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด์ž. class Car { private val engine = Engine() private fun start() { engine.start() } } class En..

โœ๏ธ ์ฝ”ํ…Œ ์ค€๋น„/DFS, BFS

[BFS][Kotlin] 2021 ์นด์นด์˜ค ์ฑ„์šฉ์—ฐ๊ณ„ํ˜• ์ธํ„ด์‹ญ - ๊ฑฐ๋ฆฌ๋‘๊ธฐ ํ™•์ธํ•˜๊ธฐ

๋ฌธ์ œ ํ’€์ด ์–ธ์–ด Kotlin ์ฝ”๋“œ import java.util.* class Solution { fun solution(places: Array): IntArray { val answer = mutableListOf() val size = places.size for (place in places) { var check = 0 for (i in 0 until size) { for (j in 0 until size) { if (place[i][j] == 'P') { if (bfs(place, i, j, size).not()) { check = 1 break } } } if (check == 1) { break } } if (check == 1) answer.add(0) else answer..

๐Ÿ’ป ๊ฐœ๋ฐœ/iOS

[TIL] 22.03.19

๊ณต๋ถ€ํ•œ ๊ฒƒ MVC, MVP, MVVM, AAC ์•Œ๊ฒŒ๋œ ๊ฒƒ 1. MVC ์šฐ์„  ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์•„ํ‚คํ…์ณ ํŒจํ„ด์ด๋‹ค. Model, View, Controller ๋กœ ๋‚˜๋‰œ๋‹ค. Model ์€ ๋ฐ์ดํ„ฐ ์ƒ์„ฑ, ์‚ญ์ œ, ๊ฐฑ์‹  ๋“ฑ์˜ ๋กœ์ง์ด ๋“ค์–ด์žˆ๋‹ค. View ๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ง€๋Š” ํ™”๋ฉด์ด๋‹ค. Controller ๋Š” ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค. ์šฐ์„  ์‚ฌ์šฉ์ž๊ฐ€ View ๋ฅผ ํ†ตํ•ด์„œ ์ž…๋ ฅ์ด ๋“ค์–ด์˜ค๊ณ  Controller ๊ฐ€ ์ด๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค. ์ด ๋•Œ ์ž…๋ ฅ์„ ๋ถ„์„ํ•ด์„œ Model ๊ณผ View ์— ๊ฐฑ์‹  ์š”์ฒญ์„ ํ•œ๋‹ค. Model ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐฑ์‹ ํ•˜๊ณ  View ๋Š” UI ๋ฅผ ๊ฐฑ์‹ ํ•œ๋‹ค. ์ •๋ฆฌํ•˜์ž๋ฉด, Controller ๋Š” Model ๊ณผ View ๊ฐ€ ๋ฌด์—‡์„ ํ•ด์•ผํ•  ์ง€ ์•Œ๊ณ  ์žˆ๊ณ  ์ด๋ฅผ ํ†ต์ œํ•˜๊ณ  ์žˆ๋‹ค. Controller ๋ฅผ ํ†ตํ•ด์„œ Model ๊ณผ..

kodo_o
'๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (6 Page)