일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 서비스 vs 쓰레드
- 서비스 쓰레드 차이
- 안드로이드 레트로핏 crud
- jvm 작동 원리
- 객체
- Rxjava Observable
- android ar 개발
- rxjava disposable
- 안드로이드 유닛 테스트
- 멤버변수
- 안드로이드 레트로핏 사용법
- 자바 다형성
- 2022 플러터 설치
- 안드로이드 라이선스
- rxjava cold observable
- ANR이란
- ar vr 차이
- rxjava hot observable
- 안드로이드 라이선스 종류
- 스택 큐 차이
- 안드로이드 유닛 테스트 예시
- 스택 자바 코드
- 2022 플러터 안드로이드 스튜디오
- jvm이란
- 안드로이드 유닛테스트란
- 안드로이드 os 구조
- 플러터 설치 2022
- 클래스
- 큐 자바 코드
- android retrofit login
- Today
- Total
목록알고리즘 문제 풀이/프로그래머스 (212)
나만을 위한 블로그
java.util.Stack 패키지에 포함된 스택을 써서 문제가 말하는 대로 코드를 작성하면 된다. import문을 써주는 걸 잊지 말자. import java.util.Stackclass Solution { fun solution(arr: IntArray): IntArray { val stk = Stack() for (element in arr) { if (stk.isNotEmpty() && stk.peek() == element) { stk.pop() } else { stk.push(element) } } return if (stk.i..
true면 해당 원소에 2를 곱한 만큼 배열에 추가하고, false면 그 원소만큼 배열에서 제거한다.forEachIndexed를 쓰면 간단하게 풀 수 있다. class Solution { fun solution(arr: IntArray, flag: BooleanArray): IntArray { val answer = arrayListOf() flag.forEachIndexed { i, b -> if (b) { repeat(arr[i] * 2) { answer.add(arr[i]) } } else { repeat(arr[i]..
아무 원소도 들어있지 않은 빈 배열 X가 있다. 양의 정수 배열 arr이 매개변수로 주어질 때, arr의 앞부터 차례대로 원소를 보면서 원소가 a면 X의 맨 뒤에 a를 a번 추가하는 걸 반복한 뒤의 배열 X를 리턴하는 함수를 작성하라 그냥 숫자만큼 arr의 원소들을 뻥튀기하라는 문제다. repeat()를 쓰면 간단하게 풀 수 있다. class Solution { fun solution(arr: IntArray): IntArray { val answer = arrayListOf() for (i in arr) { repeat(i) { answer.add(i) } } return answ..
myStr에서 a, b, c를 모두 제거해야 하기 때문에 정규식을 사용해서 푸는 법을 생각해볼 수 있다. class Solution { fun solution(myStr: String): Array { val result = myStr.split("[abc]".toRegex()).filter { it.isNotEmpty() } return if (result.isEmpty()) arrayOf("EMPTY") else result.toTypedArray() }} split()의 결과로 a, b, c를 기준으로 나눈 리스트가 리턴되고 filter를 써서 공백을 제거한다.공백 제거 후 남는 문자열들이 있는 경우와 아닌 경우 각각 다른 값을 리턴하게 하면 문제는 풀린다. 다른..
'm', 'rn'이 비슷하게 생긴 걸 이용해 문자열에 장난을 하려고 한다. 문자열 rny_string이 주어질 때 rny_string의 모든 'm'을 'rn'으로 바꾼 문자열을 리턴하는 함수를 작성하라 replace()를 써서 m을 rn으로 바꾸면 된다. class Solution { fun solution(rny_string: String): String = rny_string.replace("m", "rn")}
문자 "A", "B"로 이뤄진 문자열 myString, pat이 주어진다. myString의 "A"를 "B"로, "B"를 "A"로 바꾼 문자열의 연속하는 부분 문자열 중 pat이 있으면 1, 아니면 0을 리턴하는 함수를 완성하라 myString에 map 걸어서 글자를 바꾼 다음 공백 없는 문자열로 만들고, 이 문자열에 pat이 있냐 없냐에 따라 1 or 0을 리턴하게 하면 된다. class Solution { fun solution(myString: String, pat: String): Int { val str = myString.map { when (it) { 'A' -> 'B' 'B' -> 'A' ..
문자열 binomial이 매개변수로 주어진다. binomial은 "a op b" 형태의 이항식이고 a, b는 음이 아닌 정수, op는 + / - / * 중 하나다. 주어진 식을 계산한 정수를 리턴하는 함수를 작성하라 a, op, b 사이에 공백이 있으니 split()으로 공백을 제거한다. 이후 만들어진 리스트의 1번 인덱스에는 항상 수식 기호가 들어가 있으니 이 기호가 무엇이냐에 따라 적절하게 리스트 안의 값들을 가져와서 계산하면 된다. class Solution { fun solution(binomial: String): Int { val split = binomial.split(" ") return when (split[1]) { "+" -> spl..
문자열 myString이 주어진다. "x"를 기준으로 해당 문자열을 잘라내 배열을 만든 후, 사전순으로 정렬한 배열을 리턴하는 함수를 완성하라 x를 기준으로 문자열을 나눠야 하니까 split()을 쓰는 건 동일하다.이 때 빈 문자열이 생길 수 있으니 filter로 공백이 아닌 글자만 뽑아낸 다음, sorted()로 정렬하고 배열로 만들면 된다. class Solution { fun solution(myString: String): Array = myString.split("x") .filter { it != "" } .sorted() .toTypedArray()}
문자열 myString이 주어진다. myString을 문자 "x"를 기준으로 나눴을 때 나눠진 문자열 각각의 길이를 순서대로 저장한 배열을 리턴하는 함수를 완성하라 x를 기준으로 나눠야 하니 split()을 통해 나눈다. 이 때 split()은 나눠진 문자열들을 리스트에 담아 리턴하기 때문에 map으로 각 요소에 접근해 길이를 구한다.마지막으로 문제의 리턴타입인 IntArray에 맞게 배열로 바꿔주면 해결된다. class Solution { fun solution(myString: String): IntArray = myString.split("x").map { it.length }.toIntArray()}
단어가 공백 1개 이상으로 구분돼 있는 문자열 my_string이 매개변수로 주어질 때, my_string에 나온 단어를 앞에서부터 순서대로 담은 문자열 배열을 리턴하는 함수를 작성하라 공백 1개였던 게 2개로 늘어난 것 뿐이다. class Solution { fun solution(myString: String): List { return myString.trim().split("\\s+".toRegex()) }} 우선 trim()으로 앞뒤의 공백을 제거한다. 입출력 예를 보면 앞뒤의 공백들을 무시하는 걸 볼 수 있다.이후 split()에 공백을 넣고 제출하면 안 된다. 앞에서 말했듯 앞뒤의 공백만 제거했을 뿐이고, 글자 사이의 여러 공백들은 그대로 남아있는 상태기 때문에 sp..