전체 글
follow your dream's
-
아직 알고리즘 실력 멀었다.. 알맞은 방법으로 전혀 접근하지 못했다ㅠ🤦🏻♀️ 문제 🙆🏻♀️ How to solve 1차 접근 fun main() { val edit = readln().toList() var cursor = edit.size var result = edit.toMutableList() val count = readln().toInt() for (i in 1..count){ val m = readln().replace(" ", "") if(m.contains("P")){ val u = m.toList() result.add(cursor, u[1]) cursor += 1 } else if(m in "D"){ if(cursor == result.size){ continue } else{ c..
[백준 문제풀기] #1406번 - 에디터 with Kotlin아직 알고리즘 실력 멀었다.. 알맞은 방법으로 전혀 접근하지 못했다ㅠ🤦🏻♀️ 문제 🙆🏻♀️ How to solve 1차 접근 fun main() { val edit = readln().toList() var cursor = edit.size var result = edit.toMutableList() val count = readln().toInt() for (i in 1..count){ val m = readln().replace(" ", "") if(m.contains("P")){ val u = m.toList() result.add(cursor, u[1]) cursor += 1 } else if(m in "D"){ if(cursor == result.size){ continue } else{ c..
2023.10.03 -
문제 설명 준호는 요즘 디펜스 게임에 푹 빠져 있습니다. 디펜스 게임은 준호가 보유한 병사 n명으로 연속되는 적의 공격을 순서대로 막는 게임입니다. 디펜스 게임은 다음과 같은 규칙으로 진행됩니다. 준호는 처음에 병사 n명을 가지고 있습니다. 매 라운드마다 enemy[i]마리의 적이 등장합니다. 남은 병사 중 enemy[i]명 만큼 소모하여 enemy[i]마리의 적을 막을 수 있습니다. 예를 들어 남은 병사가 7명이고, 적의 수가 2마리인 경우, 현재 라운드를 막으면 7 - 2 = 5명의 병사가 남습니다. 남은 병사의 수보다 현재 라운드의 적의 수가 더 많으면 게임이 종료됩니다. 게임에는 무적권이라는 스킬이 있으며, 무적권을 사용하면 병사의 소모없이 한 라운드의 공격을 막을 수 있습니다. 무적권은 최대 k..
[프로그래머스] 디펜스 게임 with Kotlin문제 설명 준호는 요즘 디펜스 게임에 푹 빠져 있습니다. 디펜스 게임은 준호가 보유한 병사 n명으로 연속되는 적의 공격을 순서대로 막는 게임입니다. 디펜스 게임은 다음과 같은 규칙으로 진행됩니다. 준호는 처음에 병사 n명을 가지고 있습니다. 매 라운드마다 enemy[i]마리의 적이 등장합니다. 남은 병사 중 enemy[i]명 만큼 소모하여 enemy[i]마리의 적을 막을 수 있습니다. 예를 들어 남은 병사가 7명이고, 적의 수가 2마리인 경우, 현재 라운드를 막으면 7 - 2 = 5명의 병사가 남습니다. 남은 병사의 수보다 현재 라운드의 적의 수가 더 많으면 게임이 종료됩니다. 게임에는 무적권이라는 스킬이 있으며, 무적권을 사용하면 병사의 소모없이 한 라운드의 공격을 막을 수 있습니다. 무적권은 최대 k..
2023.09.15 -
🤔 SQLite? 앱의 데이터를 효율적으로 관리하기 위한 저장소 (로컬 데이터베이스) 소규모 데이터를 관리하고 사용하는데 적합한 관계형 데이터 베이스로, RDB형식(액셀 형태, 행과 열 ) 로 데이터를 저장한다. 속도가 빠르고 가볍다는 장점 이전 프로젝트에서 SQLite를 사용하여 프로젝트를 진행해왔습니다. 하지만 아래와 같은 이유로 인해 SQLite 보다 Jetpack 라이브러리에 포함된 Room을 사용을 권장하고 있습니다. 구글에서는 이러한 문제를 해결하고자 새롭게 Room Database Library를 배포하였습니다. 😮 Room? SQLite 데이터베이스를 쉽고 편리하게 사용할 수 있도록 하는 ORM 라이브러리 ORM은 또 뭐야? (Object-Relational Mapping) ORM이란, O..
[Android] Local Database(SQLite, Room)🤔 SQLite? 앱의 데이터를 효율적으로 관리하기 위한 저장소 (로컬 데이터베이스) 소규모 데이터를 관리하고 사용하는데 적합한 관계형 데이터 베이스로, RDB형식(액셀 형태, 행과 열 ) 로 데이터를 저장한다. 속도가 빠르고 가볍다는 장점 이전 프로젝트에서 SQLite를 사용하여 프로젝트를 진행해왔습니다. 하지만 아래와 같은 이유로 인해 SQLite 보다 Jetpack 라이브러리에 포함된 Room을 사용을 권장하고 있습니다. 구글에서는 이러한 문제를 해결하고자 새롭게 Room Database Library를 배포하였습니다. 😮 Room? SQLite 데이터베이스를 쉽고 편리하게 사용할 수 있도록 하는 ORM 라이브러리 ORM은 또 뭐야? (Object-Relational Mapping) ORM이란, O..
2023.09.12 -
프로젝트에서 livedata를 사용하던 중, mutablelivedata의 setValue()와 postValue() 메소드들 중 하나를 사용하여 값을 넣어줘야 했다. (Feat. 둘 다 MutableLiveData의 값을 변경시키는 메소드이다.) 왜인지 당연하게도 postValue로 데이터들을 넣어주고 있었다... 이번 기회를 통해 setValue와 postValue에 대해서 정확히 짚고 넘어가야겠다. SetValue() 메인 쓰레드에서 값을 바로 변경한다. (바로 변경되므로, getValue()로 값을 바로 가져올 수 있음) 메인쓰레드에서 값을 변경시키므로 Livedata를 관찰하고 있는 Observer는 바로 알아차릴 수 있다. 메인쓰레드에서 값을 dispatch하기 때문에 백그라운드에서 호출하면 ..
[android] setValue() , postValue()프로젝트에서 livedata를 사용하던 중, mutablelivedata의 setValue()와 postValue() 메소드들 중 하나를 사용하여 값을 넣어줘야 했다. (Feat. 둘 다 MutableLiveData의 값을 변경시키는 메소드이다.) 왜인지 당연하게도 postValue로 데이터들을 넣어주고 있었다... 이번 기회를 통해 setValue와 postValue에 대해서 정확히 짚고 넘어가야겠다. SetValue() 메인 쓰레드에서 값을 바로 변경한다. (바로 변경되므로, getValue()로 값을 바로 가져올 수 있음) 메인쓰레드에서 값을 변경시키므로 Livedata를 관찰하고 있는 Observer는 바로 알아차릴 수 있다. 메인쓰레드에서 값을 dispatch하기 때문에 백그라운드에서 호출하면 ..
2023.08.09 -
안드로이드의 UI 동작 안드로이드는 기본적으로 Main Thread (or UI Thread) 하나만으로 구성되는 싱글 쓰레드 모델로 동작한다. 🤔싱글 쓰레드 모델인 이유 만약 멀티 쓰레드 환경이라면, 여러 쓰레드에서 TextView 의 텍스트를 변경하는 상황이 발생하고 어떤 결과가 나타날 지 미지수이기 때문이다. 따라서 동작의 무결성을 보장하기 위해 타 쓰레드에서는 UI 를 건드릴 수 없고, 오로지 메인 쓰레드에서만 UI 관련 동작을 할 수 있게끔 하는 것이다. ✍🏼싱글 쓰레드 모델에서 지켜야할 포인트들 1. 메인 쓰레드 (UI 스레드) 를 블로킹해서는 안 됨 → 메인 쓰레드를 블로킹한다는 뜻은, 사용자에게 보여지는 UI 동작을 멈춘다는 뜻이다. 메인 쓰레드가 블로킹되어 UI 동작이 멈추게 되면, 이는..
[android] Handler & Looper안드로이드의 UI 동작 안드로이드는 기본적으로 Main Thread (or UI Thread) 하나만으로 구성되는 싱글 쓰레드 모델로 동작한다. 🤔싱글 쓰레드 모델인 이유 만약 멀티 쓰레드 환경이라면, 여러 쓰레드에서 TextView 의 텍스트를 변경하는 상황이 발생하고 어떤 결과가 나타날 지 미지수이기 때문이다. 따라서 동작의 무결성을 보장하기 위해 타 쓰레드에서는 UI 를 건드릴 수 없고, 오로지 메인 쓰레드에서만 UI 관련 동작을 할 수 있게끔 하는 것이다. ✍🏼싱글 쓰레드 모델에서 지켜야할 포인트들 1. 메인 쓰레드 (UI 스레드) 를 블로킹해서는 안 됨 → 메인 쓰레드를 블로킹한다는 뜻은, 사용자에게 보여지는 UI 동작을 멈춘다는 뜻이다. 메인 쓰레드가 블로킹되어 UI 동작이 멈추게 되면, 이는..
2023.07.24 -
1. Service란? 서비스란, 안드로이드 4대 컴포넌트 중 하나이며, 사용자에게 인터페이스를 제공하지 않고 백그라운드에서 오래 실행되는 작업을 수행할 수 있는 애플리케이션 구성 요소 다른 애플리케이션 구성 요소가 서비스를 시작할 수 있고, 다른 앱을 전환하더라도 백그라운드에서 계속 실행된다. 또한 앱 구성요소와 서비스를 바인딩하여 서비스와 상호작용 할 수 있고, 프로세스 간 통신(IPC)도 실행할 수 있다. 2. Service는 언제 사용할까? • 액티비티와 상관 없이 백그라운드에서 동작하는 component • 서버로부터 contents(파일) 다운로드 • 음악 재생 • DB에 저장 • Wi-Fi, BLE 연결 등등 3. Service 종류 포그라운드 서비스: 알림창을 통해 서비스가 실행중인 것을 ..
[android] android service?1. Service란? 서비스란, 안드로이드 4대 컴포넌트 중 하나이며, 사용자에게 인터페이스를 제공하지 않고 백그라운드에서 오래 실행되는 작업을 수행할 수 있는 애플리케이션 구성 요소 다른 애플리케이션 구성 요소가 서비스를 시작할 수 있고, 다른 앱을 전환하더라도 백그라운드에서 계속 실행된다. 또한 앱 구성요소와 서비스를 바인딩하여 서비스와 상호작용 할 수 있고, 프로세스 간 통신(IPC)도 실행할 수 있다. 2. Service는 언제 사용할까? • 액티비티와 상관 없이 백그라운드에서 동작하는 component • 서버로부터 contents(파일) 다운로드 • 음악 재생 • DB에 저장 • Wi-Fi, BLE 연결 등등 3. Service 종류 포그라운드 서비스: 알림창을 통해 서비스가 실행중인 것을 ..
2023.07.21 -
문제 설명 마인은 곡괭이로 광산에서 광석을 캐려고 합니다. 마인은 다이아몬드 곡괭이, 철 곡괭이, 돌 곡괭이를 각각 0개에서 5개까지 가지고 있으며, 곡괭이로 광물을 캘 때는 피로도가 소모됩니다. 각 곡괭이로 광물을 캘 때의 피로도는 아래 표와 같습니다. 예를 들어, 철 곡괭이는 다이아몬드를 캘 때 피로도 5가 소모되며, 철과 돌을 캘때는 피로도가 1씩 소모됩니다. 각 곡괭이는 종류에 상관없이 광물 5개를 캔 후에는 더 이상 사용할 수 없습니다.마인은 다음과 같은 규칙을 지키면서 최소한의 피로도로 광물을 캐려고 합니다.사용할 수 있는 곡괭이중 아무거나 하나를 선택해 광물을 캡니다.한 번 사용하기 시작한 곡괭이는 사용할 수 없을 때까지 사용합니다.광물은 주어진 순서대로만 캘 수 있습니다.광산에 있는 모든 ..
[프로그래머스] 광물 캐기 with Python문제 설명 마인은 곡괭이로 광산에서 광석을 캐려고 합니다. 마인은 다이아몬드 곡괭이, 철 곡괭이, 돌 곡괭이를 각각 0개에서 5개까지 가지고 있으며, 곡괭이로 광물을 캘 때는 피로도가 소모됩니다. 각 곡괭이로 광물을 캘 때의 피로도는 아래 표와 같습니다. 예를 들어, 철 곡괭이는 다이아몬드를 캘 때 피로도 5가 소모되며, 철과 돌을 캘때는 피로도가 1씩 소모됩니다. 각 곡괭이는 종류에 상관없이 광물 5개를 캔 후에는 더 이상 사용할 수 없습니다.마인은 다음과 같은 규칙을 지키면서 최소한의 피로도로 광물을 캐려고 합니다.사용할 수 있는 곡괭이중 아무거나 하나를 선택해 광물을 캡니다.한 번 사용하기 시작한 곡괭이는 사용할 수 없을 때까지 사용합니다.광물은 주어진 순서대로만 캘 수 있습니다.광산에 있는 모든 ..
2023.07.19 -
ViewBinding, DataBinding을 알아보기 전 이 그림을 보자. Databinding이 ViewBinding의 역할도 해주고 있네?? 근데 왜 ViewBinding에 대해서도 알아야하는거지?라고 생각할 수도 있다. 그 이유에 대해서 알아보겠다. ViewBinding? 1) ViewBinding 사용하게 된 이유 기존에는 xml에 있는 textview를 참조하기 위해 findViewById를 사용하여 접근하였다. val textview = findViewById(R.id.tv) textview.text = "입력" findViewById를 사용하여 접근하려면 참조할 때마다 하나씩 선언해주어 참조해야하는데 매우 번거롭다. 또한 findViewById는 Null값을 처리하지 못하여 Null poi..
[android] ViewBinding vs DataBinding ?ViewBinding, DataBinding을 알아보기 전 이 그림을 보자. Databinding이 ViewBinding의 역할도 해주고 있네?? 근데 왜 ViewBinding에 대해서도 알아야하는거지?라고 생각할 수도 있다. 그 이유에 대해서 알아보겠다. ViewBinding? 1) ViewBinding 사용하게 된 이유 기존에는 xml에 있는 textview를 참조하기 위해 findViewById를 사용하여 접근하였다. val textview = findViewById(R.id.tv) textview.text = "입력" findViewById를 사용하여 접근하려면 참조할 때마다 하나씩 선언해주어 참조해야하는데 매우 번거롭다. 또한 findViewById는 Null값을 처리하지 못하여 Null poi..
2023.07.12