일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 안드로이드 레트로핏 crud
- jvm이란
- rxjava hot observable
- 안드로이드 레트로핏 사용법
- ANR이란
- 자바 다형성
- ar vr 차이
- 2022 플러터 설치
- 플러터 설치 2022
- rxjava disposable
- 안드로이드 라이선스 종류
- jvm 작동 원리
- android retrofit login
- 안드로이드 유닛 테스트 예시
- 스택 큐 차이
- 2022 플러터 안드로이드 스튜디오
- 서비스 쓰레드 차이
- Rxjava Observable
- 큐 자바 코드
- 안드로이드 라이선스
- rxjava cold observable
- 서비스 vs 쓰레드
- 객체
- 안드로이드 os 구조
- 안드로이드 유닛테스트란
- 스택 자바 코드
- 클래스
- android ar 개발
- 멤버변수
- 안드로이드 유닛 테스트
- Today
- Total
목록알고리즘 문제 풀이 (243)
나만을 위한 블로그
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/UUpi0/btrUDiy2S7b/go3QJKv5JffZLXgyNXvIKk/img.png)
개미군단은 사냥감의 체력에 딱 맞는 병력을 데리고 나가려고 한다. 장군개미는 5, 병정개미는 3, 일개미는 1의 공격력을 갖고 있다. 체력 23의 여치를 사냥할 때 장군개미 4마리, 병정개미 1마리를 데려가면 더 적은 병력으로 사냥할 수 있다. 사냥감의 체력 hp가 매개변수로 주어질 때, 사냥감의 체력에 딱 맞게 최소한의 병력을 구성하려면 몇 마리의 개미가 필요한지 리턴하는 solution()을 완성하라 23이 주어지면 장군개미 공격력인 5로 나눈 다음, 나머지에 3을 나누는 처리(23 % 5 / 3)까지는 잘 작동하는 걸 확인했지만 일개미 부분에서 삽질했다. 결국 다른 사람의 자바 풀이를 참고해서 코틀린으로 작성했다. https://big-huni.tistory.com/entry/%ED%94%84%EB..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cPtFJB/btrUt9CWafg/Pi4U5tyF4ZoLKG5XIMWtT1/img.png)
순서쌍이란 두 개의 숫자를 순서를 정해 짝지어 나타낸 쌍으로 (a, b)로 표기한다 자연수 n이 매개변수로 주어질 때 두 숫자의 곱이 n인 자연수 순서쌍의 개수를 리턴하는 solution()을 완성하라 20의 경우 1x20, 2x10, 4x5, 5x4, 10x2, 20x1로 총 6개가 나온다. 그리고 두 숫자의 곱이 매개변수라면 매개변수를 어떤 숫자로 나눴을 때 나머지가 없다는 뜻이 된다고 생각해서 아래처럼 짰더니 통과됐다. class Solution { fun solution(n: Int): Int { var a = 0 for (i in 1 .. n) { if (n % i == 0) { a++ } } return a } } 그리고 아래처럼 짧게 만들었다. class Solution { fun solut..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bFkC87/btrUtLbl3WB/BzKjKmG7PmExCNAaQizk4k/img.png)
응급실에 온 환자의 응급도를 기준으로 진료 순서를 정한다. 정수 배열 emergency가 매개변수로 주어질 때 응급도가 높은 순서대로 진료 순서를 정한 배열을 리턴하는 solution()을 완성하라 입출력 예의 result를 보면 숫자가 큰 순서대로 정렬하지 않는다. 그래서 먼저 주먹구구식으로 로직을 짜 봤다. 매개변수로 받은 배열을 복사해 둔다 복사한 배열을 내림차순 정렬(큰 숫자부터 출력되게)한다 복사된 후 정렬된 배열 vs 원본 배열을 비교해서 정렬된 배열의 값들이 원본 배열에선 어떤 위치에 있는지 찾는다 위치를 찾으면 그 인덱스에 +1을 한 다음 리턴한다. 그리고 이걸 코드로 옮긴 결과는 이렇다. class Solution { fun solution(emergency: IntArray): IntA..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cvoCwF/btrUt06YdxF/CEwUebouiJgiNkvhkBPlk0/img.png)
모 행성에서는 나이를 알파벳으로 말한다. a는 0, b는 1, c는 2, ..., j는 9다 23살은 cd, 51살은 fb로 표현한다. 나이 age가 매개변수로 주어질 때 모 행성에서의 나이를 리턴하는 solution()을 완성하라 먼저 주먹구구식으로 푼 코드는 아래와 같다. class Solution { fun solution(age: Int): String { val s = StringBuilder() val map = hashMapOf( 0 to "a", 1 to "b", 2 to "c", 3 to "d", 4 to "e", 5 to "f", 6 to "g", 7 to "h", 8 to "i", 9 to "j" ) val list = age.toString().split("") list.forEac..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/QYxVo/btrUtjdVLNF/Ujr7SYheP80KPSEZWFSbb0/img.png)
정수 배열 numbers와 정수 num1, num2가 매개변수로 주어질 때, numbers의 num1번 인덱스부터 num2번 인덱스까지 자른 정수 배열을 리턴하는 solution()을 완성하라 배열을 자르는 방법이다. 처음 풀 때 intArray를 자르는 방법을 몰라서 리스트로 변환한 다음 subList()를 써서 배열을 자르고, 그 결과를 다시 intArray로 만드는 번거로운 방식으로 풀었다. class Solution { fun solution(numbers: IntArray, num1: Int, num2: Int): IntArray = numbers.toList().subList(num1, num2 + 1).toIntArray() } num2를 넣으면 그 이전 인덱스까지만 잘라지고 num2번 인덱..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dg5FFO/btrUsJKXJIR/KWGFdklbddfs2SYCna4tUk/img.png)
정수 n이 주어질 때, n 이하의 짝수를 모두 더한 값을 리턴하는 solution()을 작성하라 0 초과 1000 이하의 숫자 중 1부터 n까지의 범위에 속하는 모든 짝수들을 더해서 리턴하기만 하면 된다. 주먹구구식으로 푼 코드는 아래와 같다. class Solution { fun solution(n: Int): Int { var a = 0 (1..n).forEach { if (it % 2 == 0) { a += it } } return a } } 이제 이것을 더 간단하게 만들어본다. 문제를 풀면서 자주 썼던 filter를 사용한다면 이렇게 작성할 수 있다. class Solution { fun solution(n: Int) = (0..n).filter { it % 2 == 0 }.sum() } filt..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/kOgCD/btrUsOZAZaV/5jEIZOy5H2GVTVZykR0nQ1/img.png)
양꼬치 가게는 10인분 먹으면 음료수 1개를 서비스로 준다. 양꼬치는 1인분 12,000원이고 음료수는 2,000원이다. 정수 n, k가 매개변수로 주어졌을 때 양꼬치 n인분과 음료수 k개를 먹으면 총 얼마를 내야 하는지 리턴하는 solution()을 완성하라 일상생활에서도 접할 수 있는 상황이다. 어떻게 돈을 계산해서 얼마를 내야 할지를 코드로 옮기면 된다. 먼저 주먹구구식으로 푼 코드다. class Solution { fun solution(n: Int, k: Int): Int = if (n > 9) { val a = n / 10 // 서비스 음료수 개수 (12000 * n) + (2000 * k) - (2000 * a) } else { (12000 * n) + (2000 * k) } } 10개를 먹..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ck6vJa/btrUoqi0RPa/pNOy7pVG0TVPL9MfKkh6T0/img.png)
0도 초과 90도 미만은 예각, 90도는 직각, 90도 초과 180도 미만은 둔각, 180도는 평각으로 분류한다 각 angle이 매개변수로 주어질 때 예각은 1, 직각은 2, 둔각은 3, 평각은 4를 리턴하는 solution()을 완성하라 이 문제도 조건에 따른 값의 리턴처리만 해주면 풀 수 있는 문제다. 다른 각이 주어질 경우에는 별다른 말이 없으니 0을 리턴시킨다. class Solution { fun solution(angle: Int): Int = when (angle) { 90 -> { 2 } 180 -> { 4 } in 1..89 -> { 1 } in 91..180 -> { 3 } else -> { 0 } } }
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/d5F2Tg/btrUlDjDYrM/9E9DqBfl79SyRuHKh1cXzk/img.png)
문자열 my_string과 정수 n이 매개변수로 주어질 때, my_string에 들어있는 각 문자를 n만큼 반복한 문자열을 리턴하는 solution()을 완성하라 먼저 주먹구구식으로 풀어본 결과 O(n^2)의 시간복잡도를 갖는 코드가 만들어졌다. class Solution { fun solution(str: String, n: Int): String { val a = str.split("") val s = StringBuilder() for (i in a) { for (j in 0 until n) { s.append(i) } } return s.toString() } } 이걸 좀 더 간단하게 만들려면 어떻게 할까 생각해봤지만 반복할 때 쓰는 repeat()를 사용하고 문자열을 붙이는 함수를 어떤 걸 어떻..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/Dfsbr/btrUh6TYVGF/fkJ48eKUhWk92VV5QFeyok/img.png)
정수가 담긴 리스트 num_list가 주어질 때, num_list의 원소 중 짝수와 홀수의 개수를 담은 배열을 리턴하도록 solution()을 완성하라 먼저 주먹구구식으로 풀어봤다. 짝수, 홀수를 담을 ArrayList를 만들고 num_list를 순회하면서 짝수, 홀수들을 각 리스트에 담아서 intArray로 만들어 리턴하면 된다. class Solution { fun solution(numList: IntArray): IntArray { val oddList = arrayListOf() // 홀수 val evenList = arrayListOf() // 짝수 for (i in numList) { if (i % 2 == 0) { evenList.add(i) } else { oddList.add(i) } ..