728x90
문제 설명
n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다.
-1+1+1+1+1 = 3
+1-1+1+1+1 = 3
+1+1-1+1+1 = 3
+1+1+1-1+1 = 3
+1+1+1+1-1 = 3
사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해주세요.
문제 풀이
코드
import java.util.*
class Solution {
fun solution(numbers: IntArray, target: Int): Int {
val queue:Queue<Pair<Int,Int>> = LinkedList()
var answer = 0
queue.offer(Pair(numbers[0],0))
queue.offer(Pair(-numbers[0],0))
while(queue.isNotEmpty()){
var cur = queue.peek()
queue.poll()
if (cur.second == numbers.size-1) {
if (cur.first==target){
answer ++
}
continue
}
queue.offer(Pair((cur.first+numbers[cur.second+1]),cur.second+1))
queue.offer(Pair((cur.first-numbers[cur.second+1]),cur.second+1))
}
return answer
}
}
728x90
'알고리즘 > 문제풀이 (C++,Kotlin)' 카테고리의 다른 글
[BOJ/Kotlin] 1260번 DFS와 BFS : 그래프 (0) | 2023.09.10 |
---|---|
[BOJ/Kotlin] 2583번 영역 구하기 : BFS (0) | 2023.09.08 |
[프로그래머스/Kotlin] Lv2 소수찾기 : 완전탐색 (0) | 2023.09.05 |
[프로그래머스/Kotlin] Lv2 가장 큰 수 : 정렬 (0) | 2023.09.03 |
[프로그래머스/Kotlin] Lv2 프로세스 : Queue (0) | 2023.08.31 |