๋ฐ์ํ
์์ธ์๋ถํด
๋ฌธ์ ์ค๋ช
์์ธ์๋ถํด๋ ์ด๋ค ์๋ฅผ ์์๋ค์ ๊ณฑ์ผ๋ก ํํํ๋ ๊ฒ์ ๋๋ค. ์๋ฅผ ๋ค์ด 12๋ฅผ ์์ธ์ ๋ถํดํ๋ฉด 2 * 2 * 3์ผ๋ก ๋ํ๋ผ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ 12์ ์์ธ์๋ 2์ 3์ ๋๋ค. ์์ฐ์ n์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋ n์ ์์ธ์๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ๋ด์ ๋ฐฐ์ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์.
์ ํ ์ฌํญ
- 2 ≤ n ≤ 10,000
์ ์ถ๋ ฅ ์
n | result |
12 | [2, 3] |
17 | [17] |
420 | [2, 3, 5, 7] |
์ ์ถ๋ ฅ ์ ์ค๋ช
์ ์ถ๋ ฅ ์ #1
- 12๋ฅผ ์์ธ์๋ถํดํ๋ฉด 2 * 2 * 3์ ๋๋ค. ๋ฐ๋ผ์ [2, 3]์ return ํฉ๋๋ค.
์ ์ถ๋ ฅ ์ #2
- 17์ ์์์ ๋๋ค. ๋ฐ๋ผ์ [17]์ return ํด์ผ ํฉ๋๋ค.
์ ์ถ๋ ฅ ์ #3
- 420์ ์์ธ์๋ถํดํ๋ฉด 2 * 2 * 3 * 5 * 7์ ๋๋ค. ๋ฐ๋ผ์ [2, 3, 5, 7]์ return ํฉ๋๋ค.
์ ์ถ
import Foundation
func solution(_ n:Int) -> [Int] {
var arr = Array(repeating: true, count: n+1)
var primes = [Int]()
for i in 2...n {
if arr[i] == true {
for j in stride(from: i, through: n, by: i) {
arr[j] = false
}
primes.append(i)
}
}
return primes.contains(n) ? [n] : primes.filter{n%$0 == 0}
}
์์์ธ์ง ํ๋ณํ๊ธฐ ์ํ ๋ฐฐ์ด arr์ ์์๋ฅผ ๋ด์ ๋ฐฐ์ด primes๋ฅผ ์ ์ธํ๋ค.
i๋ฅผ 2๋ถํฐ n๊น์ง 1์ฉ ์ฆ๊ฐ์ํค๋ฉด์, arr[i]๊ฐ true๋ผ๋ฉด i์ ๋ฐฐ์๋ค์ arr ๊ฐ์ false๋ก ๋ฐ๊พผ ํ primes ๋ฐฐ์ด์ i๋ฅผ ์ถ๊ฐํ๋ค
์ดํ primes ํจ์์ n ์ด ์๋ค๋ฉด, n์ด ์์์ด๊ธฐ ๋๋ฌธ์ n์ ๋ฐฐ์ด์ ๋ฃ์ด ๋ฐํํ๋ค
primes ํจ์์ n์ด ์๋ค๋ฉด, filter ํจ์๋ฅผ ์ฌ์ฉํ์ฌ n์ ๋๋ ๋๋จธ์ง๊ฐ 0์ธ ๊ฐ๋ค์ ๋ฐํํ๋ค
๋ฐ์ํ
'โจ๏ธ Language > swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค LV.0] ๋ฐฐ์ด ์์์ ๊ธธ์ด (0) | 2022.12.30 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค LV.0] ์ปจํธ๋กค ์ ํธ (0) | 2022.12.30 |
[ํ๋ก๊ทธ๋๋จธ์ค LV.0] ์จ์ด์๋ ์ซ์์ ๋ง์ (1) (0) | 2022.12.30 |
[ํ๋ก๊ทธ๋๋จธ์ค LV.0] ๋ฌธ์์ด ์ ๋ ฌํ๊ธฐ (1) (0) | 2022.12.30 |
[ํ๋ก๊ทธ๋๋จธ์ค LV.0] ๋ชจ์ ์ ๊ฑฐ (0) | 2022.12.30 |