Skip to content

Commit ae31c83

Browse files
committed
solve(programmers): LV2_타겟 넘버_kt
# id: 문제 id를 숫자로 작성 # categories : 해당 문제의 유형을 ,로 구분하여 작성 # tags : 해당 문제의 태그를 ,로 구분하여 작성 # time : 해당 문제 풀이에 걸린 시간을 분단위 숫자로 작성 # try : 해당 문제에 몇번의 시도를 했는지 숫자로 작성 # help: 해당 문제에 외부의 도움을 받았는지 true/false로 작성 # url : 해당 문제의 url을 작성 id: 43165 categories: [DFS,BFS] tags: [] time: 20 try: 1 help: false url: https://school.programmers.co.kr/learn/courses/30/lessons/43165
1 parent e8c90c7 commit ae31c83

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import kotlin.collections.ArrayDeque
2+
class Solution {
3+
fun solutionWithBFS(numbers: IntArray, target: Int): Int {
4+
var answer = 0
5+
val q=ArrayDeque<Pair<Int,Int>>()
6+
q.add(Pair(0,-1))
7+
var count=0
8+
while(q.isNotEmpty()){
9+
val (current,depth)=q.removeFirst()
10+
if(depth==numbers.size-1) continue
11+
val plus=current+numbers[depth+1] to depth+1
12+
val minus=current-numbers[depth+1] to depth+1
13+
if(depth+1==numbers.size-1){
14+
if(plus.first==target) count++
15+
if(minus.first==target) count++
16+
}
17+
q.add(plus)
18+
q.add(minus)
19+
}
20+
return count
21+
}
22+
23+
var count=0
24+
fun solutionWithDFS(numbers: IntArray, target: Int): Int {
25+
var answer = 0
26+
dfs(numbers,0,0,target)
27+
return count
28+
}
29+
30+
fun dfs(numbers:IntArray,depth:Int,total:Int,target:Int){
31+
if(depth==numbers.size){
32+
if(total==target) count++
33+
return
34+
}
35+
dfs(numbers,depth+1,total+numbers[depth],target)
36+
dfs(numbers,depth+1,total-numbers[depth],target)
37+
}
38+
}

0 commit comments

Comments
 (0)