일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 서비스 쓰레드 차이
- 멤버변수
- 안드로이드 os 구조
- jvm 작동 원리
- 객체
- 안드로이드 라이선스
- 안드로이드 유닛 테스트
- 안드로이드 유닛테스트란
- 2022 플러터 설치
- 스택 자바 코드
- 안드로이드 레트로핏 사용법
- jvm이란
- 안드로이드 레트로핏 crud
- 서비스 vs 쓰레드
- ANR이란
- 스택 큐 차이
- android ar 개발
- 안드로이드 라이선스 종류
- android retrofit login
- 클래스
- 안드로이드 유닛 테스트 예시
- rxjava disposable
- ar vr 차이
- 큐 자바 코드
- rxjava cold observable
- 자바 다형성
- 2022 플러터 안드로이드 스튜디오
- 플러터 설치 2022
- Rxjava Observable
- rxjava hot observable
- Today
- Total
목록알고리즘 문제 풀이/프로그래머스 (212)
나만을 위한 블로그
while 문의 조건을 설정하는 데서 실수해서 시간을 잡아먹은 문제다. 그 외에는 문제의 조건대로 주먹구구식으로 풀었다. class Solution { fun solution(n: Int): IntArray { var aNum = n val list = mutableListOf() list.add(n) while (aNum != 1) { if (aNum % 2 == 0) { aNum /= 2 list.add(aNum) } else { aNum = (3 * aNum + 1) list.add(aNum) } } return list.toIntArray() } }
정수 start_num, end_num이 주어질 때 start_num부터 end_num까지의 숫자를 차례로 담은 리스트를 리턴하는 함수를 완성하라 코틀린의 range를 알고 있다면 이 문제도 어렵지 않게 풀 수 있다. class Solution { fun solution(startNum: Int, endNum: Int): IntArray = (startNum .. endNum).toList().toIntArray() }
정수 l, r이 주어졌을 때 l 이상 r 이하의 정수 중 숫자 0, 5로만 이뤄진 모든 정수를 오름차순 저장한 배열을 리턴하는 함수를 완성하라. 만약 그런 정수가 없다면 -1이 담긴 배열을 리턴한다 filter, all 함수를 알고 있다면 그렇게 어렵지 않은 문제다. class Solution { fun solution(l: Int, r: Int): IntArray { val a = (l .. r).filter { it.toString().all { char -> char == '0' || char == '5' } } return if (a.isEmpty()) { intArrayOf(-1) } else { a.toIntArray() } } }
수열과 구간 쿼리 2와 비슷한 문제다. i가 k의 배수인지 확인하는 조건 작성에 주의한다. class Solution { fun solution(arr: IntArray, queries: Array): IntArray { for (i in 0 until queries.size) { val s = queries[i][0] val e = queries[i][1] val k = queries[i][2] for (j in s..e) { if (j % k == 0) { arr[j]++ } } } return arr } }
수열과 구간 쿼리 3보다 좀 더 꼬아진 문제지만 2차원 배열 안의 요소에 접근한다는 큰 흐름은 이전 문제와 동일하기 때문에 일단 주먹구구식으로 풀었다 class Solution { fun solution(arr: IntArray, queries: Array): IntArray { val answer = IntArray(queries.size) for (i in queries.indices) { val s = queries[i][0] val e = queries[i][1] val k = queries[i][2] var min = Int.MAX_VALUE for (j in s..e) { if (arr[j] > k && arr[j] < min) { min = arr[j] } } answer[i] = if (m..
정수 배열 arr, 2차원 정수 배열 queries가 주어진다. queries의 원소는 각각 하나의 query를 나타내고 [i, j] 꼴이다. 각 query마다 순서대로 arr[i], arr[j]의 값을 서로 바꾼다. 이 규칙에 따라 queries를 처리한 후의 arr을 리턴하는 함수를 완성하라 2차원 배열 안에 규칙이 들어있기 때문에 queries를 순회하면서 변수 스왑으로 arr 안의 요소 위치를 바꿨다. arr을 리턴하라 해서 매개변수로 받은 arr을 함수 본문 안에서 수정해 리턴했다. class Solution { fun solution(arr: IntArray, queries: Array): IntArray { queries.forEach { innerArr -> val temp = arr[in..
이전 문제와 비슷하게 풀었는데 실행 시간이 너무 오래 걸린다. class Solution { fun solution(numLog: IntArray): String { var control = "" for (i in 1 until numLog.size) { control += if (numLog[i] - numLog[i - 1] == 1) { 'w' } else if (numLog[i] - numLog[i - 1] == -1) { 's' } else if (numLog[i] - numLog[i - 1] == 10) { 'd' } else 'a' } return control } } 간결하게 만들면 아래와 같다. class Solution { fun solution(numLog: IntArray): Stri..
조건을 생각하는 데서 시간을 많이 잡아먹었다. class Solution { fun solution(n: Int, control: String): Int { var answer: Int = n for (i in 0 until control.length) { when(control[i]) { 'w' -> { answer += 1 } 's' -> { answer -= 1 } 'd' -> { answer += 10 } 'a' -> { answer -= 10 } } } return answer } }
정수 리스트 num_list가 주어질 때, 마지막 원소가 그 전 원소보다 크면 마지막 원소에서 그 전 원소를 뺀 값, 마지막 원소가 그 전 원소보다 크지 않다면 마지막 원소를 2배한 값을 추가해서 리턴하는 함수를 완성하라 주먹구구식으로 아래처럼 풀었다. class Solution { fun solution(numList: IntArray): ArrayList { val takeLastTwo: List = numList.takeLast(2) val list = ArrayList() for (num in numList) { list.add(num) } val last = takeLastTwo[1] val beforeLast = takeLastTwo[0] if (last > beforeLast) { list...
정수 리스트 num_list가 주어진다. num_list의 홀수만 순서대로 이어 붙인 수, 짝수만 순서대로 이어 붙인 수의 합을 리턴하는 함수를 완성하라 reduce를 쓸 수도 있지만 이번엔 filter, joinToString을 써서 풀었다. class Solution { fun solution(numList: IntArray): Int { val odd = numList.filter { it % 2 == 1 }.joinToString("").toInt() val even = numList.filter { it % 2 == 0 }.joinToString("").toInt() return odd + even } }