일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 코틀린
- 2020
- dp
- GREEDY
- sortedBy
- 프로그래머스
- Kotlin
- intarray
- 2D Array
- solution
- booleanarray
- foreach
- contentToString
- Developer
- 알고리즘
- lastIndex
- dynamic programming
- Recursion
- report
- 동적계획법
- Queue
- PriorityQueue
- Main
- hackerrank
- Util
- Java
- heap
- programmers
- Poll
- indices
- Today
- Total
Code in
프로그래머스 깊이/너비 우선 탐색 타겟 넘버 with kotlin 본문
프로그래머스 깊이/너비 우선 탐색 타깃 넘버 문제입니다.
IntelliJ에서의 풀이입니다.
val numbers: IntArray = intArrayOf(1, 1, 1, 1, 1)
val target: Int = 3
fun solution(numbers: IntArray, target: Int): Int {
val arr: ArrayList<Int> = ArrayList()
recursion(0, numbers, numbers[0], target, arr)
recursion(0, numbers, numbers[0]*-1, target, arr)
return arr.size
}
fun recursion(curIndex: Int, numbers: IntArray, curNum: Int, target: Int, arr: ArrayList<Int>){
if (curIndex == numbers.lastIndex) {
if (curNum == target)
arr.add(curNum)
return
}
recursion(curIndex + 1, numbers, curNum + numbers[curIndex + 1], target, arr)
recursion(curIndex + 1, numbers, curNum - numbers[curIndex + 1], target, arr)
}
fun main() {
println(solution(numbers, target))
}
URL: https://programmers.co.kr/learn/courses/30/lessons/43165
다른 사람의 풀이에서 Kotlin의 fold, run, map, count를 사용하여
더 간단하게 풀이하는 방법이 있음을 알 수 있었습니다.
Kotlin의 여러 기능을 더 익혀야 할 것 같습니다.
fold: Accumulates value starting with initial value and applying operation from left to right to current accumulator value and each element. Returns the specified initial value if the array is empty.
run: The context object is available as a receiver (this). The return value is the lambda result. run does the same as with but invokes as let - as an extension function of the context object. run is useful when your lambda contains both the object initialization and the computation of the return value. Besides calling run on a receiver object, you can use it as a non-extension function. Non-extension run lets you execute a block of several statements where an expression is required.
Map: A collection that holds pairs of objects (keys and values) and supports efficiently retrieving the value corresponding to each key. Map keys are unique; the map holds only one value for each key. Methods in this interface support only read-only access to the map; read-write access is supported through the MutableMap interface.
count: Returns the number of elements matching the given predicate.
'알고리즘 스터디_문제풀이' 카테고리의 다른 글
프로그래머스 깊이/너비 우선 탐색 단어 변환 with Kotlin (1) | 2020.08.26 |
---|---|
프로그래머스 깊이/너비 우선 탐색 네트워크 with Kotlin (1) | 2020.08.26 |
프로그래머스 동적계획법 N으로 표현 with Kotlin (2) | 2020.08.23 |
프로그래머스 탐욕법(Greedy) 섬 연결하기 with Kotlin (2) | 2020.08.18 |
프로그래머스 탐욕법(Greedy) 조이스틱 with Kotlin (1) | 2020.08.17 |