본문 바로가기

분류 전체보기

(96)
[안드로이드] BottomSheetDialog BottomSheetDialog는 어떠한 이벤트 발생 시 위와 같이 하단에서 내가 설정한 Layout을 보여주는 기능이다. 사용 방법 thmes.xml ... @android:color/transparent : 배경 투명하게 interview_bs_layout.xml BottomSheetDialog에서 보여주고 싶은 layout을 위와 같이 셋팅한다. drawable/bottomsheet_bs.xml(상단 테두리 둥글게) MainActivity.kt class MainActivity : AppCompatActivity() { private lateinit var bottomSheetDialog: BottomSheetDialog override fun onCreate(savedInstanceState: B..
[프로그래머스] 광물 캐기 Lv.2 with Kotlin 문제 다음과 같이 3가지 종류의 곡괭이와 광물이 있다. 각 곡괭이로 광물을 캘 때, 위와 같은 피로도가 소모가 된다. 주어진 광물을 순서대로 캘 때, 최소한의 피로도를 구하는 문제 조건 모든 곡괭이는 각각 5번만 사용 가능하다. 한 번 선택한 곡괭이는 5번 사용할 때까지 바꿀 수 없다. 곡괭이가 모두 소진되거나, 광물을 모두 캐면 종료 풀이 방법 다이아 : 25 , 철 : 5, 돌 : 1 DFS로 모든 경우의 수 확인 피로도 = 현재 광물 / 사용중인 도구 (값이 0이면 1) 코드 class Solution { var answer: Int = 0 val hash = hashMapOf("diamond" to 25, "iron" to 5, "stone" to 1) val tools = hashMapOf(0 ..
[프로그래머스] 디펜스 게임 Lv.2 with Kotlin 문제 n에 현재 나의 병력의 수, enemy 배열에 각 라운드별 적군의 수가 주어진다. 적군의 수만큼 나의 병력을 소모하여 적을 막을 수 있다. 한 라운드를 병력 소모없이 넘어갈 수 있는 무적권 k가 주어진다. 이때, 무적권을 적절히 사용하여 막을 수 있는 최대 라운드를 구하여라 풀이 과정 1. 무적권을 사용하지 않고 가능한 라운드까지 진행 2. 각 라운드별 적군의 수를 저장 -> Heap 자료구조 / Kotlin에서는 PriorityQueue 사용 3. 나의 병력으로 넘어갈 수 없을 때, 현재 적군의 병력과 이전 적군 중 가장 많은 적군을 비교 4. 더 큰 적군에 무적권을 사용 4-1. 현재 적군이 더 많다면 라운드만 증가 4-2 이전 적군이 더 많다면 현재 n에 이전 적군을 더하고 배열에서 삭제, 현..
[오류] Firebase SDK 동기화 오류 Firebase와 안드로이드 연결 셋팅 중 안드로이드에서 Gradle 추가하는 과정에서 다음과 같은 오류가 났다. Unable to find method ''com.android.build.api.variant.SourceDirectories$Flat com.android.build.api.variant.Sources.getByName(java.lang.String)'' 'com.android.build.api.variant.SourceDirectories$Flat com.android.build.api.variant.Sources.getByName(java.lang.String)' Gradle's dependency cache may be corrupt (this sometimes occurs afte..
[프로그래머스] 리코쳇 로봇 LV.2 with Kotlin 문제 주어진 2차원 배열에서 R의 위치에 있는 로봇에 G까지 도달하는데 걸리는 최소 횟수 구하기 조건 1. 로봇은 상하좌우만 움직일 수 있다. 2. D는 벽 3. 막히는 구간까지 미끄러지듯 쭉 가야함 4. 목적지에 도달할 수 없다면 -1 반환 ...D..R .D.G... ....D.D D....D. ..D.... 풀이 과정 1. 이동했던 방향으로 다시 돌아가지 않도록 하기 2. 방문 했던 좌표는 pass 첫번째 시도 (DFS) 이동하는 모든 곳을 확인 테스트는 통과했지만 모든 경우의 수를 확인하는 방법으로 시간 초과 class Solution { val dx = arrayOf(1, -1, 0, 0) val dy = arrayOf(0, 0, -1, 1) var answer: Int = 0 fun move(..
[JAVA] 인터페이스 기본 개념 자바를 사용하다보면 인터페이스를 사용할 때가 온다. 그럼 인터페이스는 무엇일까? 인터페이스는 일종의 가이드북, 설계도라고 볼 수 있다. 그렇다면 인터페이스는 왜 필요할까? 인터페이스의 필요성 자바에서는 상속이라는 기능이 있다. 상속을 통해 다양한 동작을 수행할 수 있는 장점을 갖는다. 그러나 다중 상속을 할 경우 여러가지 문제 때문에 다중 상속을 할 수가 없다. 따라서 이를 보완하기 위해 인터페이스로 다중 상속을 대체한다. 인터페이스의 구조 인터페이스의 구조는 다음과 같다. interface Example{ public static final String name = "예제"; public abstract void Test(); public abstract void Test2(int a); } 인터페이스..
[Java] 객체 지향 프로그래밍에 입문하는 사람 또는 Java에 입문하는 사람이라면 무조건 들어봤을 객체 지향 그럼 객체 지향은 무엇일까? 우선 객체에 대해 알아야한다. 객체 객체란 사전적인 정의로 실제 존재하는 것을 말한다. 그러나 프로그래밍에서의 객체는 필드(데이터들의 집합), 메소드(함수)들의 집합이라고 보면 된다. 필드 String name; Int grade; 메소드 void example(){...} void example2(){...} 또한 필드와 메소드들을 담고 있는 일종의 케이스가 바로 클래스이다. 클래스 public class Example { String name; int grade; void example(){...} void example2(){...} } 객체 지향의 특징 1. 추상화 추상화란 과정은..
[안드로이드] BroadCast Receiver 안드로이드 4대 컴포넌트 중 하나인 브로드캐스트 리시버는 어떠한 이벤트가 발생되었을 때 그에 관한 메시지를 받을 수 있게 한다. 예를 들면 기기 재부팅, 핸드폰 충전 등 시스템 이벤트가 발생했을 경우 브로트캐스트를 전송하며, 이를 수신하여 작업을 처리할 수 있다. 이외의 자세한 내용은 공식문서를 참고 바랍니다. https://developer.android.com/guide/components/broadcasts?hl=ko#receiving-broadcasts 브로드캐스트 개요 | Android 개발자 | Android Developers 브로드캐스트 개요 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Android 앱은 Android 시스템 및 기타 Android 앱에서..
[안드로이드] Alarm Manager Alarm Manager란 말 그대로 설정한 시간에 설정한 작업을 수행할 수 있는 기능이다. 즉, 특정 시간에 앱을 사용하지 않아도 어떠한 작업을 할 수 있게 해주는 기능이며 특징은 다음과 같다. 지정된 시간에 또는 정해진 간격으로 인텐트를 실행 Broadcast receiver와 함께 알람을 사용하여 서비스를 시작하고 다른 작업을 실행할 수 있다. 애플리케이션 외부에서 작동하므로 알람을 사용하면 앱이 실행 중이 아니거나 기기가 대기 상태인 경우에도 이벤트나 작업을 트리거할 수 있다. 알람은 앱의 리소스 요구사항을 최소화하는 데 도움이 됩니다. 타이머 또는 계속 실행 중인 백그라운드 서비스를 사용하지 않고 작업을 예약할 수 있다. 이외의 권장사항 또는 장단점은 공식문서를 참고 바랍니다. https://d..
[프로그래머스] 모음사전 with Kotlin 문제 사전에 알파벳 모음 'A', 'E', 'I', 'O', 'U'만을 사용하여 만들 수 있는, 길이 5 이하의 모든 단어가 수록되어 있습니다. 사전에서 첫 번째 단어는 "A"이고, 그다음은 "AA"이며, 마지막 단어는 "UUUUU"입니다. 단어 하나 word가 매개변수로 주어질 때, 이 단어가 사전에서 몇 번째 단어인지 return 하도록 solution 함수를 완성해주세요. 제한 사항 word의 길이는 1 이상 5 이하입니다. word는 알파벳 대문자 'A', 'E', 'I', 'O', 'U'로만 이루어져 있습니다. 풀이 DFS로 탐색하며 answer ++ , word 단어가 나오면 break 후 answer 반환 코드 class Solution { val words = arrayOf('A', 'E'..