일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 안드로이드 레트로핏 사용법
- rxjava cold observable
- 안드로이드 유닛 테스트
- 스택 자바 코드
- jvm 작동 원리
- ar vr 차이
- 클래스
- 플러터 설치 2022
- 안드로이드 유닛테스트란
- 안드로이드 라이선스
- 스택 큐 차이
- 안드로이드 레트로핏 crud
- 안드로이드 라이선스 종류
- 서비스 vs 쓰레드
- jvm이란
- android retrofit login
- android ar 개발
- 멤버변수
- 자바 다형성
- ANR이란
- 객체
- 2022 플러터 안드로이드 스튜디오
- 서비스 쓰레드 차이
- rxjava hot observable
- rxjava disposable
- Rxjava Observable
- 2022 플러터 설치
- 안드로이드 os 구조
- 큐 자바 코드
- 안드로이드 유닛 테스트 예시
- Today
- Total
목록알고리즘 문제 풀이/프로그래머스 (212)
나만을 위한 블로그
정수가 담긴 리스트 num_list가 주어질 때, 리스트 길이가 11 이상이면 리스트에 있는 모든 원소의 합을, 10 이하면 모든 원소의 곱을 리턴하는 함수를 완성하라 sum, reduce 함수를 조건에 맞게 쓰면 간단하게 풀 수 있다. class Solution { fun solution(num_list: IntArray): Int = if (num_list.size > 10) num_list.sum() else num_list.reduce { acc, i -> acc * i }}
앞선 2개 문제들과 마찬가지로 변환 규칙이 있다. 짝수면 반으로 나누고 홀수면 1을 빼고 반으로 나눈다.이 변환을 반복해서 모든 숫자들이 1이 될 때까지 나누기 연산을 수행한 다음 최종적으로 몇 번 나눴는지를 리턴한다. class Solution { fun solution(num_list: IntArray): Int { var totalDivisions = 0 for (num in num_list) { var current = num while (current != 1) { if (current % 2 == 0) { current /= 2 } els..
변환 규칙은 1과 유사해서 만들기 어렵지 않았지만 이후 풀지 못해서 챗지피티에 물어봤다. class Solution { fun solution(arr: IntArray): Int { var current = arr.copyOf() var next: IntArray var count = 0 while (true) { next = current.map { num -> when { num >= 50 && num % 2 == 0 -> num / 2 num num * 2 + 1 else -> num ..
정수 배열 arr이 주어진다. arr의 각 원소에 대해 값이 50보다 크거나 같은 짝수면 2로 나누고 50보다 작은 홀수면 2를 곱한다. 그 결과인 정수 배열을 리턴하는 함수를 완성하라 문제 핵심은 2개다. 숫자가 50보다 크거나 같은 짝수 : 2로 나눔숫자가 50보다 작거나 작은 홀수 : 2를 곱함 이 조건에 맞게 if 또는 when을 작성하면 된다. 그 외의 경우에는 num을 리턴하면 될 것이다. class Solution { fun solution(arr: IntArray): IntArray = arr.map { num -> when { num >= 50 && num % 2 == 0 -> num / 2 num num * 2 ..
queries를 순회하면서 query를 뽑아내고 s, e에 해당하는 숫자를 추출한 다음, arr의 특정 위치에 1씩 더해서 리턴하면 통과된다. class Solution { fun solution(arr: IntArray, queries: Array): IntArray { for (query in queries) { val start = query[0] val end = query[1] for (i in start..end) { arr[i] += 1 } } return arr }}
정수 배열 numbers, 정수 n이 매개변수로 주어진다. numbers의 원소를 앞부터 하나씩 더하다가 그 합이 n보다 커지는 순간 이 때까지 더했던 원소들의 합을 리턴하는 함수를 작성하라 forEach로 numbers를 순회하며 n보다 작으면 리턴할 result 변수에 차례로 값을 더하고, n보다 크면 즉시 리턴시켜서 result 변수를 리턴시키면 통과된다. class Solution { fun solution(numbers: IntArray, n: Int): Int { var result = 0 numbers.forEach { if (result > n) return@forEach result += it } ..
오늘 해야 할 일이 담긴 문자열 배열 todo_list, 각각의 일을 지금 마쳤는지 나타내는 boolean 배열 finished가 매개변수로 주어질 때, todo_list에서 아직 못 마친 일들을 순서대로 담은 배열을 리턴하는 함수를 완성하라 zip()을 써서 두 배열을 하나로 합친 다음, false라면(=아직 못 마쳤다면) 배열에 담아서 리턴하도록 짜면 통과된다. class Solution { fun solution(todo_list: Array, finished: BooleanArray): Array { var result = arrayOf() todo_list.zip(finished.toTypedArray()) { todo, finished -> ..
최대 5명씩 탑승 가능한 놀이기구를 타기 위해 줄을 서 있는 사람들의 이름이 담긴 문자열 리스트 names가 주어질 때, 앞에서부터 5명씩 묶은 그룹의 가장 앞에 서 있는 사람들의 이름을 담은 리스트를 리턴하는 함수를 완성하라. 마지막 그룹이 5명이 되지 않더라도 가장 앞 사람의 이름을 포함한다 주먹구구식으로 푼다면 아래와 같다. class Solution { fun solution(names: Array): ArrayList { val result = names.toMutableList().chunked(5) val resultArr = arrayListOf() repeat(result.size) { resultArr.add(result[..
정수 리스트 num_list가 주어진다. 가장 첫 번째 원소를 1번 원소라고 할 때 홀수 번째 원소들의 합과 원소들의 합 중 큰 값을 리턴하는 함수를 완성하라. 두 값이 같으면 그 값을 리턴한다 매개변수로 받은 num_list 안의 정수들의 홀짝을 구분한 후 종류별로 더해서 갖고 있을 변수를 만들고, num_list 안의 정수를 홀짝으로 나눠서 더한 다음 리턴하도록 짜면 된다. forEachIndexed와 if-else if를 활용하면 간단하게 풀 수 있다. class Solution { fun solution(numList: IntArray): Int { var odd = 0 var even = 0 numList.forEachIndexed { index, i..
정수 리스트 num_list, 정수 n이 주어질 때, num_list의 첫 번째 원소부터 마지막 원소까지 n개 간격으로 저장된 원소들을 차례로 담은 리스트를 리턴하는 함수를 완성하라 주먹구구식으로 풀면 아래와 같다. class Solution { fun solution(numList: IntArray, n: Int): IntArray { val list = mutableListOf() for (i in numList.indices step n) { list.add(numList[i]) } return list.toIntArray() } } 위 코드는 filterIndexed를 쓰면 더 간결해진다. class Solution { fun solution(numList: IntArray, n: Int): In..