From 73d52459f82def97216ac09aac2effc6a3015267 Mon Sep 17 00:00:00 2001 From: yubin Date: Tue, 20 Aug 2024 17:45:17 +0900 Subject: [PATCH] =?UTF-8?q?solce(programmers):=20LV2=5F=ED=83=80=EA=B2=9F?= =?UTF-8?q?=20=EB=84=98=EB=B2=84=5Fkt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # 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 --- ...00\352\262\237\353\204\230\353\262\204.kt" | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 "src/algorithmProblems/programmers/LV2_\355\203\200\352\262\237\353\204\230\353\262\204.kt" diff --git "a/src/algorithmProblems/programmers/LV2_\355\203\200\352\262\237\353\204\230\353\262\204.kt" "b/src/algorithmProblems/programmers/LV2_\355\203\200\352\262\237\353\204\230\353\262\204.kt" new file mode 100644 index 0000000..91716da --- /dev/null +++ "b/src/algorithmProblems/programmers/LV2_\355\203\200\352\262\237\353\204\230\353\262\204.kt" @@ -0,0 +1,38 @@ +import kotlin.collections.ArrayDeque +class Solution { + fun solutionWithBFS(numbers: IntArray, target: Int): Int { + var answer = 0 + val q=ArrayDeque>() + q.add(Pair(0,-1)) + var count=0 + while(q.isNotEmpty()){ + val (current,depth)=q.removeFirst() + if(depth==numbers.size-1) continue + val plus=current+numbers[depth+1] to depth+1 + val minus=current-numbers[depth+1] to depth+1 + if(depth+1==numbers.size-1){ + if(plus.first==target) count++ + if(minus.first==target) count++ + } + q.add(plus) + q.add(minus) + } + return count + } + + var count=0 + fun solutionWithDFS(numbers: IntArray, target: Int): Int { + var answer = 0 + dfs(numbers,0,0,target) + return count + } + + fun dfs(numbers:IntArray,depth:Int,total:Int,target:Int){ + if(depth==numbers.size){ + if(total==target) count++ + return + } + dfs(numbers,depth+1,total+numbers[depth],target) + dfs(numbers,depth+1,total-numbers[depth],target) + } +} \ No newline at end of file