๐ ์ฝ๋ฉํ ์คํธ ๋ฌธ์ ํ์ด
โ๐ป ๋ฌธ์ ํ์ด github ๋งํฌ
๋ฌธ์ ์ค๋ช
์ฒ ํธ๋ ์์ด์ ๊ฐ์ง๊ณ ๋๊ธฐ ์ข์ํฉ๋๋ค. ์ด๋ ๋ ์ฒ ํธ๋ ์ด๋ค ์์ฐ์๋ก ์ด๋ฃจ์ด์ง ์ํ ์์ด์ ์ฐ์ํ๋ ๋ถ๋ถ ์์ด์ ํฉ์ผ๋ก ๋ง๋ค ์ ์๋ ์๊ฐ ๋ชจ๋ ๋ช ๊ฐ์ง์ธ์ง ์์๋ณด๊ณ ์ถ์ด์ก์ต๋๋ค. ์ํ ์์ด์ด๋ ์ผ๋ฐ์ ์ธ ์์ด์์ ์ฒ์๊ณผ ๋์ด ์ฐ๊ฒฐ๋ ํํ์ ์์ด์ ๋งํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์์ด [7, 9, 1, 1, 4] ๋ก ์ํ ์์ด์ ๋ง๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ํ ์์ด์ ์ฒ์๊ณผ ๋์ด ์ฐ๊ฒฐ๋์ด ๋๊ธฐ๋ ๋ถ๋ถ์ด ์๊ธฐ ๋๋ฌธ์ ์ฐ์ํ๋ ๋ถ๋ถ ์์ด๋ ์ผ๋ฐ์ ์ธ ์์ด๋ณด๋ค ๋ง์์ง๋๋ค.
์ํ ์์ด์ ๋ชจ๋ ์์ elements๊ฐ ์์๋๋ก ์ฃผ์ด์ง ๋, ์ํ ์์ด์ ์ฐ์ ๋ถ๋ถ ์์ด ํฉ์ผ๋ก ๋ง๋ค ์ ์๋ ์์ ๊ฐ์๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- 3 ≤ elements์ ๊ธธ์ด ≤ 1,000
- 1 ≤ elements์ ์์ ≤ 1,000
์ ์ถ๋ ฅ ์
elements | result |
[7,9,1,1,4] | 18 |
๋ฌธ์ ํ์ด
๋์ ํ์ด
import Foundation
func solution(_ elements:[Int]) -> Int {
var sumElements = [Int]()
for num in 0..<elements.count {
var some = 0
for i in 0..<elements.count-1 {
some += elements[(num + i)%elements.count]
sumElements.append(some)
}
}
sumElements.append(elements.reduce(0){$0 + $1})
return Set(sumElements).count
}
5๊ฐ์ ์ซ์๋ก ์๋ฎฌ๋ ์ด์ ์ ๋๋ ค๋ณด๋ 5๊ฐ์ ์ซ์๋ฅผ ๋ชจ๋ ํฉํ๋ ๊ฒ์ ์ ์ธํ๊ณ ๋ ์๊ธฐ ์์ ์ ๊ธฐ์ค์ผ๋ก 1, (1,2), (1,2,3), (1,2,3,4) ๋ก ๋ํด์ง๋ฉด, for๋ฌธ์ ๋ ๋ฒ๋ง ๋๋ฆฌ๊ณ ๋๋ผ ์ ์๊ฒ ๋ค๊ณ ์๊ฐ์ ํ๋ค. ๋๋ฆฌ๋ ์ค์ ๋ฐ๋ณต๋๋ ๊ฐ์ ์๊ฐํ์ง ์๊ณ ๋ง์ง๋ง์ Set์ผ๋ก ์ค๋ณต๊ฐ์ ๋นผ์ฃผ์ด์ผ ๊ฒ ๋ค๊ณ ์๊ฐ์ ํ๋ค. ์ํ์ด๊ธฐ ๋๋ฌธ์ ์๊ธฐ ์์ ์ ๊ธฐ์ค์ผ๋ก 3๋ฒ์งธ ๋ค์ ์๋ 4๋ฒ์งธ ๋ค์ ์๋ฅผ ์ป์ ์ ์๋๋ก ๋๋จธ์ง ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ค. ๋ง์ง๋ง์ 5๊ฐ๋ฅผ ๋ชจ๋ ๋ํด์ฃผ๋ ๊ฐ์ ๋ฃ์ด์ฃผ์๋ค.
์์ ๊ฒฝ์ฐ๋ฅผ n๊ฐ์ ์๋ก ์ผ๋ฐํํ์ฌ ํ์๋๋ ํ๋ฒ์ ํ๋ ธ๋ค! ๋๋ฌด ๊ธฐ๋ถ ์ข๊ณ !
๋ค๋ฅธ ์ฌ๋ ํ์ด
import Foundation
func solution(_ elements:[Int]) -> Int {
var answer = Set<Int>()
func dfs(_ now: Int, _ num: Int, _ count: Int) {
answer.insert(num)
if elements.count == count { return }
for i in now..<now+1 {
dfs((i + 1) % elements.count, num + elements[i % elements.count], count + 1)
}
}
for i in 0..<elements.count {
dfs((i + 1) % elements.count , elements[i], 1)
}
return answer.count
}
dfs ๋ฌธ์ ๋ก๋ ํ ์ ์๊ตฌ๋?!
dfs ๋? ๊น์ด์ฐ์ ํ์ ( depth First Search )์ ์ค์๋ง๋ก, ๋ค์ branch๋ก ๋์ด๊ฐ๊ธฐ ์ ์ ํด๋น branch๋ฅผ ์๋ฒฝํ๊ฒ ํ์ํ๋ ๋ฐฉ๋ฒ์ด๋ค.
dfs์ ๋ํ ๋ก์ง์ ๊ตฌํํด๋ณธ์ ์ด ์์ด์ ์ด๋ฒ์๋ ๋์ผ๋ก๋ง ์ตํ๋ดค๋๋ฐ, ์ ๋๋ก ๊ฐ๋ ๊ณต๋ถํด์ dfs ๊ด๋ จ ๋ฌธ์ ๋ค์ ๊ผญ ํ์ด๋ด์ผ๊ฒ ๋ค๋ผ๋ ์๊ฐ์ ํ๋ค.