2022. 10. 20. 11:04ใํ๋ก๊ทธ๋๋จธ์ค-Swift
ํ๋ก๊ทธ๋๋จธ์ค - ์ฐ์ ๋ถ๋ถ ์์ด ํฉ์ ๊ฐ์
๋ฌธ์ ์ค๋ช
https://school.programmers.co.kr/learn/courses/30/lessons/131701
๋์ ํ์ด
๋๋จธ์ง ์ฐ์ฐ์๋ฅผ ํตํด ์ํํ๋ ๊ฒ์ด ์๋ ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ 2๋ฐฐ๋ก ๋ง๋ ๋ค์ ํฌ ํฌ์ธํฐ๋ฅผ ์ด์ฉํด์ ๊ตฌํ๋ค.
ํ์ง๋ง ์ด ํ์ด๋ for๋ฌธ์ ๋ ๋ฒ ์ฌ์ฉํ๋ฉด์ reduce๋ฅผ ์ฌ์ฉํด์์ธ์ง ํน์ ์ผ์ด์ค์์ ์๊ฐ์ด๊ณผ๊ฐ ๋ฌ๋ค.
๊ทธ๋์ ๋ค๋ฅธ์ฌ๋์ ํ์ด๋ฅผ ์ฐธ๊ณ ํ๋ค.
import Foundation
func solution(_ elements:[Int]) -> Int {
var answer: Set<Int> = []
var arr = [[Int]](repeating: elements, count: 2)
var flatArr = arr.flatMap{$0}
let n = elements.count
for i in 0..<n {
for j in 0..<n {
answer.insert(flatArr[j..<j+i+1].reduce(0, +))
}
}
return answer.count
}
๋ค๋ฅธ ์ฌ๋์ ํ์ด
1๋ ๋ฒจ์ ์ซ์ ํ๋๋ง ์ถ๊ฐํ ์ ์๊ฒ ์ค์ ํ DFS์ด๋ค.
now๋ ํ์ฌ ํ์ํ๊ณ ์๋ ์ซ์์ด๋ฉฐ ์ด๋ 1, 2, 3, 4, 5๊ฐ ์์๋ 5๋ค์๋ 1์ด ๋ค์ ์์ผํ๊ธฐ ๋๋ฌธ์ ๋๋จธ์ง ์ฐ์ฐ์๋ก ๋์๋ค.
๊ทธ๋ฆฌ๊ณ count == elements.count๊ฐ ์๊ธฐ ๋๋ฌธ์ ๊ฐ์ฅ ๊ธด ์์ด์ ํฉ๊น์ง ๋์ถํ ์ ์๋ ๊ฒ์ด๋ค.
์๋ฅผ๋ค์ด 1, 2, 3, 4, 5์ ์์ด์์ 3๋ถํฐ 5์ ๊ธธ์ด๋ฅผ ๊ฐ๋ ์์ด์ ๊ฐ๋๋ค๊ณ ํ์๋ 3, 4, 5, 1, 2๊ฐ ๋ ๊ฒ์ด๊ณ ์ด๋ count๊ฐ 5๊ฐ ๋ ๋๊น์ง ์งํํ๊ธฐ ๋๋ฌธ์ ๋๋ฌํ ์ ์๋ค.
ํฌํฌ์ธํฐ ์๋๋ฉด for๋ฌธ๋ง ์๊ฐํ์๋๋ฐ ์์ด์ ๊ธธ์ด๋ง๋ค addํ๋ค๋ ์ ์์ DFS๋ฅผ ์ฌ์ฉํ๋ฉด ์๊ฐ๋ณต์ก๋๋ฅผ ์ค์ผ ์ ์๋ ์์ด๋์ด๊ฐ ์ข์๋ค.
import Foundation
func solution(_ elements:[Int]) -> Int {
var answer: Set<Int> = []
func DFS(_ now: Int, _ num: Int, _ count: Int) {
answer.insert(num)
if count == elements.count { return }
for i in now..<now+1 {
DFS((i+1) % elements.count, num+elements[i], count+1)
}
}
for i in 0..<elements.count {
DFS((i+1) % elements.count, elements[i], 1)
}
return answer.count
}
'ํ๋ก๊ทธ๋๋จธ์ค-Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค - ๋ฐฉ๋ฌธ ๊ธธ์ด(Swift) (0) | 2022.10.20 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค - ์คํฌํธ๋ฆฌ(Swift) (0) | 2022.10.20 |
ํ๋ก๊ทธ๋๋จธ์ค - ๋ ๋ฐ๋จน๊ธฐ(Swift) (0) | 2022.10.19 |
ํ๋ก๊ทธ๋๋จธ์ค - ํ๋ ์ฆ4๋ธ๋ก(Swift) (0) | 2022.10.18 |
ํ๋ก๊ทธ๋๋จธ์ค - ํผ๋ก๋(Swift) (0) | 2022.10.18 |