일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- android ar 개발
- 안드로이드 유닛 테스트
- 스택 자바 코드
- jvm 작동 원리
- 안드로이드 레트로핏 crud
- 서비스 vs 쓰레드
- 2022 플러터 안드로이드 스튜디오
- android retrofit login
- Rxjava Observable
- 객체
- ar vr 차이
- 스택 큐 차이
- 자바 다형성
- rxjava disposable
- 안드로이드 레트로핏 사용법
- 큐 자바 코드
- ANR이란
- 플러터 설치 2022
- 안드로이드 유닛테스트란
- 서비스 쓰레드 차이
- rxjava hot observable
- 2022 플러터 설치
- jvm이란
- 안드로이드 os 구조
- 안드로이드 유닛 테스트 예시
- 멤버변수
- 안드로이드 라이선스
- Today
- Total
목록알고리즘 문제 풀이/프로그래머스 (212)
나만을 위한 블로그
정수 리스트 num_list가 주어질 때, 모든 원소들의 곱이 모든 원소들의 합의 제곱보다 작으면 1, 크면 0을 리턴하는 함수를 완성하라 이 문제도 조건에 맞춰서 숫자 연산한 다음 0, 1 중 하나를 리턴하면 된다. reduce 함수를 알고 있다면 금방 풀 수 있다. class Solution { fun solution(num_list: IntArray): Int { val sum = num_list.sum() val multi = num_list.reduce { acc, v -> acc * v } return if (sum * sum < multi) 0 else 1 } } reduce는 컬렉션 안의 모든 데이터를 모으는 함수다. 첫 번째 요소부터 시작해서 현재 accumulator 값과 각 요소에 왼..
조건만 맞춰서 숫자 3개를 연산하고 리턴시키면 되는 특이할 것 없는 문제다. class Solution { fun solution(a: Int, b: Int, c: Int): Int = if (a != b && a != c && b != c) { a + b + c } else if (a == b && a == c) { (a + b + c) * (a * a + b * b + c * c) * (a * a * a + b * b * b + c * c * c) } else { (a + b + c) * (a * a + b * b + c * c) } }
두 정수 a, d와 길이가 n인 boolean 배열 included가 주어진다. 첫 항이 a, 공차가 d인 등차수열에서 included[i]가 i + 1항을 의미할 때 이 등차수열의 1항부터 n항까지 included가 true인 항들만 더한 값을 리턴하는 함수를 작성하라 2, 4, 6, 8...처럼 모든 숫자가 동일하게 2씩 차이가 나는 숫자의 열이 있다면 이를 등차수열이라고 부른다. 사전적 정의는 서로 이웃하는 두 항 사이의 차이가 일정한 수열이다. 문제에서 true에 해당하는 숫자만 따로 빼서 더해야 하기 때문에 Map을 사용해서 true인 숫자만 골라내서 더하고 리턴시키는 방법을 생각했다. class Solution { fun solution(a: Int, d: Int, included: Boole..
30분 동안 풀어보려 했으나 풀리지 않아서 다른 풀이를 확인하고 코틀린으로 바꿔서 제출했다. class Solution { fun solution(code: String): String { val sb = StringBuilder() var mode = 0 code.forEachIndexed { index, _ -> if (code[index] == '1') { mode = 1 - mode } else if (index % 2 == mode) { sb.append(code[index]) } } return sb.toString().ifEmpty { "EMPTY" } } } 처음에 mode는 0으로 시작한다고 문제 하단에 쓰여 있고 1이 들어올 수도 있기 때문에 var mode 형태로 변수를 선언하고, 0..
두 정수 a, b와 boolean 변수 flag가 매개변수로 주어질 때, flag가 true면 a+b, flase면 a-b를 리턴하는 함수를 작성하라 boolean 값인 flag에 따라 +, - 연산만 구분해서 리턴해주면 되는 문제다. class Solution { fun solution(a: Int, b: Int, flag: Boolean): Int = if (flag) { a + b } else { a - b } }
받은 문자열이 무엇이냐에 따라 n, m에 수행하는 연산이 달라지고 리턴하는 숫자가 달라지기 때문에 when 절을 쓰면 될 것이다. class Solution { fun solution(ineq: String, eq: String, n: Int, m: Int): Int = when { ineq == "" && eq == "=" -> if (n >= m) 1 else 0 ineq == "" && eq == "!" -> if (n > m) 1 else 0 else -> {0} } } 이전에 when을 써서 풀었을 때와 마찬가지로, else 브랜치가 거슬린다. 없애려면 if를 쓰거나 when과 중괄호 사이에 소괄호로 조건을 넣으면 된다. 이대로도 통과됐고 귀찮아서 그렇게 하지 않았다.
양의 정수 n이 매개변수로 주어질 때 n이 홀수면 n 이하의 홀수인 모든 양의 정수의 합을 리턴하고, n이 짝수면 n 이하의 짝수인 모든 양의 정수의 제곱의 합을 리턴하는 함수를 작성하라 어떤 숫자를 2로 나눴을 때 1이 남는다면 그 숫자는 홀수고, 1이 남지 않으면 그 숫자는 짝수다. 그리고 어떤 숫자 이하의 홀수 / 짝수는 모두 2를 빼야 얻을 수 있다. 예를 들어 10 이하의 짝수는 8, 6, 4, 2로 10에서 -2를 계속 하다보면 얻을 수 있다. 마찬가지로 7 이하의 홀수는 5, 3, 1로 역시 7에서 -2를 계속 하면 얻을 수 있다. 이제 어떻게 홀짝인 숫자들을 얻을 수 있을지 알았다. 그리고 홀수면 모든 양의 정수의 합을 리턴하고, 짝수면 모든 양의 정수의 합을 제곱해서 리턴해야 한다. 주먹..
정수 number, n, m이 주어진다. number가 n의 배수면서 m의 배수면 1을 리턴하고 아니면 0을 리턴하는 함수를 완성하라 n의 배수 문제에서 1을 리턴하는 조건만 하나 추가된 문제다. 배수가 아닌 경우 0을 리턴한다는 조건은 똑같다. class Solution { fun solution(number: Int, n: Int, m: Int): Int = if (number % n == 0 && number % m == 0) 1 else 0 }
정수 num, n이 매개변수로 주어질 때, num이 n의 배수면 1을 리턴하고 n의 배수가 아니면 0을 리턴하는 solution 함수를 완성하라 10은 2의 배수다. 즉 10을 2로 나눴을 때 나머지가 0이 되지 않는 수를 말한다. 그렇다면 num을 n으로 나눴을 때 나머지가 0이면 num은 n의 배수라는 뜻이니 1을 리턴시키고, 아니라면 배수가 아니니 0을 리턴시키면 된다. class Solution { fun solution(num: Int, n: Int): Int = if (num % n == 0) 1 else 0 }
연산 ⊕ 는 두 정수에 대한 연산으로 두 정수를 붙여서 쓴 값을 리턴한다. 양의 정수 a, b가 주어졌을 때 a ⊕ bdhk 2 * a * b 중 더 큰 값을 리턴하는 함수를 완성하라. 단, a ⊕ b와 2 * a * b가 같으면 a ⊕ b를 리턴한다 더 크게 합치기 문제와 비슷한 문제다. 다른 건 2번째 연산이 바뀐 것 뿐이다. 더 크게 합치기 문제에 제출한 코드를 조금 변경해서 풀면 된다. class Solution { fun solution(a: Int, b: Int): Int { val first = "$a$b" val second = "${2 * a * b}" return if (first.toInt() > second.toInt() || first.toInt() == second.toInt()..