본문 바로가기

분류 전체보기

(100)
[프로그래머스] 멀리 뛰기(Lv 2) with Kotlin 문제 효진이는 멀리 뛰기를 연습하고 있습니다. 효진이는 한번에 1칸, 또는 2칸을 뛸 수 있습니다. 칸이 총 4개 있을 때, 효진이는 (1칸, 1칸, 1칸, 1칸) (1칸, 2칸, 1칸) (1칸, 1칸, 2칸) (2칸, 1칸, 1칸) (2칸, 2칸) 의 5가지 방법으로 맨 끝 칸에 도달할 수 있습니다. 멀리뛰기에 사용될 칸의 수 n이 주어질 때, 효진이가 끝에 도달하는 방법이 몇 가지인지 알아내, 여기에 1234567를 나눈 나머지를 리턴하는 함수, solution을 완성하세요. 예를 들어 4가 입력된다면, 5를 return하면 됩니다. 풀이 과정 1칸 : 1가지 2칸 : 2가지 1 1 2 3칸 : 3가지 1 1 1 1 2 2 1 4칸 : 5가지 위의 예제 5칸 : 8가지 1 1 1 1 1 2 1 1 1..
[프로그래머스] 피보나치 수(Lv 2) with Kotlin 문제 피보나치 수는 F(0) = 0, F(1) = 1일 때, 1 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 수 F(2) = F(0) + F(1) = 0 + 1 = 1 F(3) = F(1) + F(2) = 1 + 1 = 2 F(4) = F(2) + F(3) = 1 + 2 = 3 F(5) = F(3) + F(4) = 2 + 3 = 5 2 이상의 n이 입력되었을 때, n번째 피보나치 수를 1234567으로 나눈 나머지를 리턴하는 함수, solution을 완성해 주세요. 풀이 과정 피보나치 수는 다이나믹 프로그래밍의 대표적인 문제이므로 DP를 사용하여 해결한다. 코드 class Solution { fun solution(n: Int): Int { val dp = Array(n+1)..
[프로그래머스] JadenCase 문자열 만들기 with Kotlin 문제 주어진 문자열 s를 다음과 같이 변환하여 반환 시작하는 알파벳은 무조건 대문자 나머지는 소문자 입출력 예 s return "3people unFollowed me" "3people Unfollowed Me" "for the last week" "For The Last Week" 풀이 과정 1. s를 모두 소문자로 변환 2. 첫 시작 또는 공백 다음만 대문자로 입력, 나머지는 소문자 코드 class Solution { fun solution(s: String): String { val string = s.toLowerCase() //소문자로 변환 val sb = StringBuilder() for(i in string){ //시작 부분 또는 이전이 공백이라면 대문자 삽입 if(sb.length == ..
[안드로이드] Permission (TedPermission) 권한 요청 Permission이란? 안드로이드 앱을 사용하다보면 오디오, 위치 등 권한을 요청 받아 본 적이 있을 것이다. 바로 그 권한이 permission이다. 어떤 기능을 구현하기 위해 위치, 카메라 오디오 등의 권한이 필요할 때가 있다. TedPermission은 권한 요청을 손쉽게 구현할 수 있도록 기능을 제공하는 오픈소스이다. https://github.com/ParkSangGwon/TedPermission GitHub - ParkSangGwon/TedPermission: Easy check permission library for Android Marshmallow Easy check permission library for Android Marshmallow - ParkSangGwon/TedPermi..
[안드로이드] 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); } 인터페이스..