일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- android retrofit login
- 안드로이드 유닛 테스트
- 자바 다형성
- 안드로이드 레트로핏 사용법
- 플러터 설치 2022
- 서비스 vs 쓰레드
- 스택 자바 코드
- 안드로이드 라이선스 종류
- android ar 개발
- rxjava cold observable
- 서비스 쓰레드 차이
- 스택 큐 차이
- 클래스
- 안드로이드 라이선스
- jvm 작동 원리
- ANR이란
- 객체
- 큐 자바 코드
- 안드로이드 os 구조
- rxjava disposable
- ar vr 차이
- 안드로이드 레트로핏 crud
- 멤버변수
- jvm이란
- Rxjava Observable
- 안드로이드 유닛 테스트 예시
- 안드로이드 유닛테스트란
- rxjava hot observable
- 2022 플러터 설치
- 2022 플러터 안드로이드 스튜디오
- Today
- Total
목록알고리즘 문제 풀이/프로그래머스 (212)
나만을 위한 블로그
순서쌍이란 두 개의 숫자를 순서를 정해 짝지어 나타낸 쌍으로 (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..
응급실에 온 환자의 응급도를 기준으로 진료 순서를 정한다. 정수 배열 emergency가 매개변수로 주어질 때 응급도가 높은 순서대로 진료 순서를 정한 배열을 리턴하는 solution()을 완성하라 입출력 예의 result를 보면 숫자가 큰 순서대로 정렬하지 않는다. 그래서 먼저 주먹구구식으로 로직을 짜 봤다. 매개변수로 받은 배열을 복사해 둔다 복사한 배열을 내림차순 정렬(큰 숫자부터 출력되게)한다 복사된 후 정렬된 배열 vs 원본 배열을 비교해서 정렬된 배열의 값들이 원본 배열에선 어떤 위치에 있는지 찾는다 위치를 찾으면 그 인덱스에 +1을 한 다음 리턴한다. 그리고 이걸 코드로 옮긴 결과는 이렇다. class Solution { fun solution(emergency: IntArray): IntA..
모 행성에서는 나이를 알파벳으로 말한다. 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..
정수 배열 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번 인덱..
정수 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..
양꼬치 가게는 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개를 먹..
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 } } }
문자열 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()를 사용하고 문자열을 붙이는 함수를 어떤 걸 어떻..
정수가 담긴 리스트 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) } ..
"*"의 높이, 너비를 1이라고 했을 때 "*"을 이용해 직각 이등변 삼각형을 그리려고 한다 정수 n이 주어지면 높이, 너비가 n인 직각 이등변 삼각형을 출력하는 코드를 작성하라 그냥 저렇게 나오도록 구현하면 된다. 사용할 것은 3을 입력하면 저렇게 나와야 하니까 반복문을 써야 한다는 것이다. 별 옆에 공백이 있다고 생각하면 1번 줄은 별이 1개 + 공백이 2개, 2번 줄은 별이 2개 + 공백이 1개, 3번 줄은 별이 3개 + 공백이 0개라고 볼 수 있다. 공백은 별도로 print()하지 않아도 되니까 별만 신경쓰면 된다. fun main(args: Array) { val (n) = readLine()!!.split(' ').map(String::toInt) for (i in 0 until n) { fo..