티스토리 뷰
728x90
https://programmers.co.kr/learn/courses/30/lessons/43165?language=swift
https://sio2whocode.tistory.com/171
풀이는 C++ 풀이와 같다.
Swift로 풀이하는 과정에서 알게 된 점은
암시적 추출 옵셔널로 선언하는 것이 자원 소모가 크다는 점이다.
시간이 그러지 않았을 때보다 4배정도 더 측정됐다.
1. numbers배열 전역변수를 암시적 추출 옵셔널로 선언했을 때 : 약 400ms
2. numbers배열 전역변수를 일반 [Int] 타입으로 선언했을 때 : 약 100ms
3. numbers배열을 dfs함수의 매개변수로 전달할 때 : 약 30ms
1번
import Foundation
var globalNumbers: [Int]!
var globalTarget: Int!
var count: Int = 0
func dfs(_ sum: Int, _ i: Int){
if i == globalNumbers.count - 1 {
if sum == globalTarget {
count += 1
}
return
}
dfs(sum + globalNumbers[i+1], i+1);
dfs(sum - globalNumbers[i+1], i+1);
}
func solution(_ numbers:[Int], _ target:Int) -> Int {
globalNumbers = numbers
globalTarget = target
dfs(globalNumbers[0], 0)
dfs(-globalNumbers[0], 0)
return count
}
2번
import Foundation
var globalNumbers: [Int] = []
var globalTarget: Int = 0
var count: Int = 0
func dfs(_ sum: Int, _ i: Int){
if i == globalNumbers.count - 1 {
if sum == globalTarget {
count += 1
}
return
}
dfs(sum + globalNumbers[i+1], i+1);
dfs(sum - globalNumbers[i+1], i+1);
}
func solution(_ numbers:[Int], _ target:Int) -> Int {
globalNumbers = numbers
globalTarget = target
dfs(globalNumbers[0], 0)
dfs(-globalNumbers[0], 0)
return count
}
3번
import Foundation
var count: Int = 0
func dfs(_ numbers: [Int], _ target: Int, _ sum: Int, _ i: Int){
if i == numbers.count - 1 {
if sum == target {
count += 1
}
return
}
dfs(numbers, target, sum + numbers[i+1], i+1);
dfs(numbers, target, sum - numbers[i+1], i+1);
}
func solution(_ numbers:[Int], _ target:Int) -> Int {
dfs(numbers, target, numbers[0], 0)
dfs(numbers, target, -numbers[0], 0)
return count
}
728x90
'알고리즘 문제풀이' 카테고리의 다른 글
[프로그래머스] 위장 (Swift) (0) | 2022.03.02 |
---|---|
[프로그래머스] 괄호 회전하기 (Swift) (스터디) (0) | 2022.02.27 |
[프로그래머스] 타겟 넘버 (C++) (0) | 2022.02.22 |
[프로그래머스] 로또의 최고순위와 최저순위 (Swift) (스터디) (0) | 2022.02.19 |
[프로그래머스] #139 하샤드 수 (Swift) (0) | 2022.02.18 |
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- dfs
- 최대힙
- 프로그래머스
- 백트래킹
- 최단경로
- 가장 큰 수 Swift
- 트리
- 백준
- c++
- 스택
- 파이썬
- Swift
- 우선순위큐
- 다이나믹프로그래밍
- BFS
- 동적계획법
- 브루트포스
- 수학
- 정렬
- dp
- 이분탐색
- 웹크롤링
- 토마토
- 가장 큰 수 프로그래머스
- 알고리즘
- 최소힙
- 게임이론
- 그리디알고리즘
- 자바
- 투포인터
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함