๋ฐ์ํ
ํ๋ก๊ทธ๋๋จธ์ค LV.1 ๋ชจ์
์์ ์ฐพ๊ธฐ
๋ฌธ์ ์ค๋ช
1๋ถํฐ ์ ๋ ฅ๋ฐ์ ์ซ์ n ์ฌ์ด์ ์๋ ์์์ ๊ฐ์๋ฅผ ๋ฐํํ๋ ํจ์, solution์ ๋ง๋ค์ด ๋ณด์ธ์.
์์๋ 1๊ณผ ์๊ธฐ ์์ ์ผ๋ก๋ง ๋๋์ด์ง๋ ์๋ฅผ ์๋ฏธํฉ๋๋ค.
(1์ ์์๊ฐ ์๋๋๋ค.)
์ ํ ์ฌํญ
- n์ 2 ์ด์ 1000000 ์ดํ์ ์์ฐ์์ ๋๋ค.
์ ์ถ๋ ฅ ์
n | result |
10 | 4 |
5 | 3 |
์ ์ถ๋ ฅ ์ ์ค๋ช
์ ์ถ๋ ฅ ์ #1
- 1๋ถํฐ 10 ์ฌ์ด์ ์์๋ [2,3,5,7] 4๊ฐ๊ฐ ์กด์ฌํ๋ฏ๋ก 4๋ฅผ ๋ฐํ
์ ์ถ๋ ฅ ์ #2
- 1๋ถํฐ 5 ์ฌ์ด์ ์์๋ [2,3,5] 3๊ฐ๊ฐ ์กด์ฌํ๋ฏ๋ก 3์ ๋ฐํ
์ ์ถ
import Foundation
func solution(_ n:Int) -> Int {
var isPrime = true
var count = 0
for i in 2...n {
isPrime = true
for j in 2...Int((sqrt(Double(n))))+1 {
if i != j && i % j == 0 {
isPrime = false
break
}
}
count = isPrime ? count + 1 : count
}
return count
}
2๋ถํฐ n๊น์ง i๋ฅผ ์ฆ๊ฐ์ํค๋ฉฐ ๋ฐ๋ณต๋ฌธ์ ์คํํ๋ค.
2๋ถํฐ n์ ์ ๊ณฑ๊ทผ๊น์ง ๋ฐ๋ณต๋ฌธ์ ์คํํ๋ฉฐ, i์ j๊ฐ ๊ฐ๊ฑฐ๋ i๊ฐ j๋ก ๋๋์ด ๋จ์ด์ง๋ฉด ์์๊ฐ ์๋๋ฏ๋ก isPrime ๋ณ์๋ฅผ false๋ก ๋ฐ๊พผ๋ค.
๊ทธ๋ฆฌ๊ณ ๋ฐ๋ณต๋ฌธ์ ์ข ๋ฃ์ํจ๋ค.
isPrime ๋ณ์๊ฐ true๋ผ๋ฉด 1์ ์ฆ๊ฐํ๊ณ , ์๋๋ผ๋ฉด ์ฆ๊ฐํ์ง ์๋๋ค.
๋ค๋ฅธ ํ์ด
import Foundation
func solution(_ n:Int) -> Int {
var array = Array(repeating: true, count: n+1)
var result = 0
for i in 2...n where array[i] == true{
result += 1
for j in stride(from: i, through: n, by: i){
array[j] = false
}
}
return result
}
n๊ฐ์ ์์๋ฅผ ๊ฐ๋ Bool ๋ฐฐ์ด array๋ฅผ ์์ฑํ๋ค.
2๋ถํฐ n๊น์ง i๋ฅผ ์ฆ๊ฐ์ํค๋ฉฐ ๋ฐ๋ณต๋ฌธ์ ์คํํ๋ฉฐ, array[i]๊ฐ true์ธ ๊ฒฝ์ฐ๋ง ๊ตฌ๋ฌธ์ ์คํํ๋ค.
j๋ฅผ i๋ถํฐ n๊น์ง i๋งํผ ์ฆ๊ฐ์ํค๋ฉฐ ๋ฐ๋ณต๋ฌธ์ ์คํํ๋ฉฐ, array[j]๋ฅผ ๋ชจ๋ false๋ก ๋ง๋ ๋ค.
ex) n์ด 10, i ๊ฐ 2์ธ ๊ฒฝ์ฐ 2, 4, 6, 8์ด ๋ชจ๋ false๊ฐ ๋๋ฉฐ, ์ดํ ๋ฐ๋ณต๋ฌธ์์ 2์ ๋ฐฐ์๋ ๊ตฌ๋ฌธ์ ๋์ํ์ง ๋ชปํ๋ค.
๋ฐ์ํ
'โจ๏ธ Language > swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift] ์๋ฌ ์ฒ๋ฆฌ (0) | 2023.02.07 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค LV.1] ์๋ฐ์๋ฐ์๋ฐ์๋ฐ์๋ฐ์? (0) | 2023.02.07 |
[Swift] ๊ณ ์ฐจํจ์ (0) | 2023.02.06 |
[Swift] ํด๋ก์ (Closure) (0) | 2023.02.06 |
[Swift] ์ต์คํ ์ (Extensions) (0) | 2023.02.06 |