[프로그래머스 lv.2 타겟 넘버]
접근 방법을 전혀 몰랐는데 튜터님과 다른 분의 해설을 듣고 이해가 되었다.
주어진 숫자들이 4, 1, 2, 1일 때, 트리 구조로 그리면 아래와 같아진다.

이 트리를 너비 우선 탐색(BFS)으로 탐색한다면 아래의 순서로 진행된다. (빨강 -> 노랑 -> 파랑 -> 초록 순)

각 계층에서 나타나는 값 모두를 탐색하고 다음 계층으로 넘어가는 방식이다.
기존 튜터님께서 알려주신 풀이가 이 방법을 활용한 풀이였다.
func solution(_ numbers:[Int], _ target:Int) -> Int {
var results = [0]
for num in numbers {
results = results.reduce(into: [Int]()) {
let a = $1 + num
let b = $1 - num
$0.append(a)
$0.append(b)
}
}
return results.filter { $0 == target }.count
}
깊이 우선 탐색(DFS)으로 탐색한다면 아래의 순서로 진행된다. (빨강 -> 노랑 -> 파랑 -> 초록 순)
가장 깊은 값까지 먼저 탐색하고, 해당 값(현재는 8)의 탐색이 끝나면 바로 위계층인 7에서 더 깊어지는 부분이 있는지 확인한다.
현재는 다음 깊이인 6이 존재하므로 8다음으로 6을 탐색한다.

이는 재귀함수 방식으로 풀이할 수 있는데, 구현해보려니 아직 어려워서... 구현 시 추가 예정이다.

네이버 지도 SDK는 카메라를 통해 넓은 지도를 바라보는 것처럼 표현한다.
화면에 보이는 지도는 특정 좌표(= camera position)를 기준으로 특정 범위를 비추는 카메라 화면이라고 생각하면 될 것 같다.