일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 구조
- 2022 플러터 안드로이드 스튜디오
- 안드로이드 라이선스
- rxjava cold observable
- rxjava hot observable
- Rxjava Observable
- 클래스
- ANR이란
- ar vr 차이
- 서비스 vs 쓰레드
- 서비스 쓰레드 차이
- 안드로이드 라이선스 종류
- 자바 다형성
- 플러터 설치 2022
- 안드로이드 유닛 테스트
- 2022 플러터 설치
- android retrofit login
- jvm 작동 원리
- 스택 자바 코드
- 안드로이드 레트로핏 crud
- 큐 자바 코드
- 안드로이드 레트로핏 사용법
- rxjava disposable
- 스택 큐 차이
- android ar 개발
- 안드로이드 유닛 테스트 예시
- 안드로이드 유닛테스트란
- 객체
- 멤버변수
- jvm이란
- Today
- Total
목록알고리즘 문제 풀이 (243)
나만을 위한 블로그
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cc3oA4/btsC8YDkvbK/ldl1wyrC7VS58iJ5vGuuP0/img.png)
정수 배열 arr이 주어진다. arr의 원소는 1 또는 0이다. 정수 idx가 주어졌을 때 idx보다 크면서 배열의 값이 1인 가장 작은 인덱스를 찾아 리턴하는 함수를 완성하라. 단 그러한 인덱스가 없다면 -1을 리턴한다 구현 단계에서 막혀 풀지 못해 다른 사람의 풀이를 참고했다. class Solution { fun solution(arr: IntArray, idx: Int): Int { var answer = 0 for (i in arr.indices) { if (i >= idx && arr[i] == 1) { answer = i break } else { answer = -1 } } return answer } }
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/Zitfg/btsDbfEw1xg/I7d8SeXGMhtA1ZsLbKjy3K/img.png)
정수 start_num, end_num이 주어질 때 start_num에서 end_num까지 1씩 감소하는 수들을 차례로 담은 리스트를 리턴하는 함수를 리턴하라 start부터 end까지의 range를 만들고 역순으로 출력하면 된다. class Solution { fun solution(start: Int, end_num: Int): IntArray = (end_num .. start).toList().reversed().toIntArray() }
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bDDdqu/btsC9zJ2ndr/OzsfPOvbZKdDfIF8tSiSt1/img.png)
문자열 my_string, 정수 배열 indices가 주어질 때 my_string에서 indices의 원소에 해당하는 인덱스의 글자를 지우고 이어 붙인 문자열을 리턴하는 함수를 완성하라 코틀린의 filterIndexed 함수를 쓰면 간단하게 풀 수 있다. class Solution { fun solution(my_string: String, indices: IntArray): String = my_string.filterIndexed { index, _ -> index !in indices } } filterIndexed 함수를 쓰면 문자열의 인덱스, 문자에 대해 필터링을 걸 수 있다. 그래서 indices 배열에 포함되지 않은 인덱스의 문자만을 골라서 새 문자열을 만들어낸다. 문제에서 특정 인덱스의 글..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/PitwP/btsC5XZv8Cq/bHvbSohZzUkZkVXb2kbfO1/img.png)
정수 n, k가 주어졌을 때 1 이상 n 이하의 정수 중에서 k의 배수를 오름차순으로 저장한 배열을 리턴하는 함수를 완성하라 주먹구구식으로 풀면 아래와 같다. class Solution { fun solution(n: Int, k: Int): IntArray { val list = mutableListOf() (1 .. n).forEach { if (it % k == 0) { list.add(it) } } return list.toIntArray() } } 간결하게 풀면 아래와 같이 할 수 있다. class Solution { fun solution(n: Int, k: Int) = (k..n step k).toList() }
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bSqlVP/btsC2zrvL7G/wwEkIez0jWTWakpxRjKclK/img.png)
알파벳 대소문자로만 이뤄진 문자열 my_string이 주어질 때 my_string에서 대문자의 개수, 소문자의 개수를 순서대로 담은 길이 52의 정수 배열을 리턴하는 함수를 완성하라 대문자인 경우, 소문자인 경우를 구분하는 것은 isUpperCase(), isLowerCase()를 통해 가능하다. 하지만 이후 result와 같이 정수 배열을 만들어야 하는데, 저 부분의 구현에서 막혀서 풀지 못했다. 아래는 다른 사람의 풀이를 참고한 코드다. class Solution { fun solution(myStr: String): IntArray { val counts = IntArray(52) myStr.forEach { when { it.isUpperCase() -> counts[it - 'A']++ it.i..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/2L8aV/btsCMqaNevf/hY9Y1GC220pX0ZyRHK6Am1/img.png)
정수 q, r과 문자열 code가 주어질 때 code의 각 인덱스를 q로 나눴을 때 나머지가 r인 위치의 문자를 앞에서부터 순서대로 이어 붙인 문자열을 리턴하는 함수를 완성하라 forEachIndexed를 쓰면 쉽게 풀 수 있다. 나머지가 r인 경우에만 StringBuilder.append()로 이어붙이고 forEachIndexed가 끝날 때 StringBuilder를 리턴해주면 된다. class Solution { fun solution(q: Int, r: Int, code: String): String { val sb = StringBuilder() code.forEachIndexed { index, c -> if (index % q == r) { sb.append(c) } } return sb.to..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bsHYG6/btsCODgmVmo/pgXlX1wfgjSbsAYVztaFa1/img.png)
문자열 my_string, 두 정수 m, c가 주어진다. my_string을 한 줄에 m자씩 가로로 적었을 때 왼쪽부터 세로로 c번째 열에 적힌 글자들을 문자열로 리턴하는 함수를 완성하라 코틀린의 chunked() 함수를 쓰면 문자열을 n글자씩 자른 묶음을 리스트 형태로 리턴받는다. 그리고 2번째 위치(1번 인덱스)에 있는 문자열을 가져와야 하기 때문에 매개변수 c에서 1을 빼고, 이 인덱스에 있는 문자를 가져와서 문자열로 만들어 리턴한다. class Solution { fun solution(myStr: String, m: Int, c: Int): String = myStr.chunked(m) .map { it[c - 1] } .joinToString("") }
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/GUoxp/btsCUyLyWOa/9kZkf3sbkeTtIhDn7T4qs0/img.png)
문자열 my_string, 정수 s, e가 매개변수로 주어질 때, my_string에서 인덱스 s~e까지 뒤집은 문자열을 리턴하는 함수를 완성하라 코틀린은 문자열 안에서 특정 범위의 문자열을 뒤집는 함수를 제공하지 않기 때문에 직접 구현해야 한다. 구현 단계는 아래와 같다. 문자열을 3개 부분으로 나눈다. 뒤집을 부분의 앞, 뒤집을 부분, 뒤집을 부분의 뒤 뒤집으려는 부분 뒤집기 3개 부분을 다시 합쳐서 새 문자열 생성 class Solution { fun solution(my_string: String, s: Int, e: Int): String { val sb = StringBuilder() sb.append(my_string.substring(0, s)) .append(my_string.substr..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bWa4aX/btsCRhcJYuV/kRikKooLGMzbHI8Uydf4AK/img.png)
어떤 문자열에 대해서 접두사는 특정 인덱스까지의 문자열을 의미한다. banana의 모든 접두사는 b, ba, ban, bana, banan, banana다. 문자열 my_string, is_prefix가 주어질 때, is_prefix가 my_string의 접두사면 1, 아니면 0을 리턴하는 함수를 완성하라 접미사인지 확인하기 문제와 비슷하게 풀 수 있다. 접미사 확인 문제에선 리스트에 is_suffix가 포함되는지 확인했다면 이 문제에선 is_prefix로 시작하는지 확인하면 된다. class Solution { fun solution(my_string: String, is_prefix: String): Int = if (my_string.startsWith(is_prefix)) 1 else 0 }
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/etUCl3/btsCP45SE9M/safK1rOHbjvUIKvFA7fK0k/img.png)
문자열 my_string, 정수 n이 매개변수로 주어질 때 my_string의 앞의 n글자로 이뤄진 문자열을 리턴하는 함수를 완성하라 입출력 예시를 보면 앞에서 n번째 문자열까지 잘라서 리턴하기 때문에 그렇게 작동하는 함수를 만들면 된다. class Solution { fun solution(my_string: String, n: Int): String = my_string.substring(0, n) }