๋ฌธ์ ์ค๋ช
1๋ถํฐ ์ ๋ ฅ๋ฐ์ ์ซ์ n ์ฌ์ด์ ์๋ ์์์ ๊ฐ์๋ฅผ ๋ฐํํ๋ ํจ์, solution์ ๋ง๋ค์ด ๋ณด์ธ์.
์์๋ 1๊ณผ ์๊ธฐ ์์ ์ผ๋ก๋ง ๋๋์ด์ง๋ ์๋ฅผ ์๋ฏธํฉ๋๋ค.
(1์ ์์๊ฐ ์๋๋๋ค.)
์ ํ ์กฐ๊ฑด
- n์ 2์ด์ 1000000์ดํ์ ์์ฐ์์ ๋๋ค.
์ ์ถ๋ ฅ ์
n | result |
10 | 4 |
5 | 3 |
๋ด ๋ฌธ์ ํ์ด
func solution(_ n:Int) -> Int {
var result = 0 // ์์์ ๊ฐ์ ๋ด๊ธฐ ์ํ ๋ณ์
var answer = true // ์์์ธ์ง ์๋์ง ํ๋ณํ๊ธฐ ์ํ ๋ณ์
for i in 2...n {
// 2, 3์ ์ด์ฐจํผ ์์๊ณ
// ์ ๊ณฑ๊ทผ๊น์ง ๋๋๊ธฐ ์ํด์ ์ ๊ณฑ๊ทผ์ด 2๋ณด๋ค ์์ 2, 3์ ๋ฐ๋ก ๋นผ์ result์ ๊ฐ์๋ฅผ ๋ํด์ฃผ์์
if i < 4 {
result += 1
}
else {
// i๋ฅผ 2๋ถํฐ i์ ์ ๊ณฑ๊ทผ๊น์ง ์ฐจ๋ก๋ก ๋๋ ๋ณด๋ for๋ฌธ
for j in 2...Int(sqrt(Double(i))) {
// i๊ฐ ํ ๋ฒ์ด๋ผ๋ ๋๋ ์ ธ ๋จ์ด์ง๋ค๋ฉด ๊ทธ ์๋ ์์๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก break
if i % j == 0 {
answer = false
break
}
// i๊ฐ ๋๋ ์ ธ ๋จ์ด์ง์ง ์๋๋ค๋ฉด answer์ true ์ ์ฅ
else {
answer = true
}
}
// ๋ฐ๋ณต๋ฌธ ์ข
๋ฃ ํ answer๊ฐ true์ผ ๊ฒฝ์ฐ ํด๋น ์๋ ์์๋ก ํ๋ณ, result์ 1 ์ถ๊ฐ
if answer == true {
result += 1
}
}
}
return result
}
- 2, 3์ ์ด์ฐจํผ ์์๊ธฐ ๋๋ฌธ์ n์ด 4๋ณด๋ค ํด ๋๋ 2, 3์ ๋ํ ๋ถ๋ถ์ ์นด์ดํธํด์ฃผ์๋ค.
- ์ฃผ์ด์ง ์์ ์ ๊ณฑ๊ทผ๊น์ง ๋ฐ๋ณตํ๋ฉฐ ์ฃผ์ด์ง ์๋ฅผ ๋๋์ด์ฃผ์๋ค.
(์ด์ฐจํผ ์ ๊ณฑ๊ทผ๊น์ง๋ ๋๋ ์ง์ง ์์๋ค๋ฉด ๋์ด์ ๋๋ ์ง ์๊ฐ ์๊ธฐ ๋๋ฌธ.) - Bool ๋ณ์๋ก ์์์ธ์ง ์๋์ง ํ๋ณํ์ฌ ํ์๋ฅผ ์นด์ดํธํ๋ค.
๐ก ํผ๋๋ฐฑ
- ์
๋ ฅ์ด 4 ๋ฏธ๋ง์ผ ๋๋ฅผ ๋ฐ๋ก ๋นผ์คฌ๋๋ฐ,
2์ผ์๋ ์๊ณ 3์ผ์๋ ์๋๋ฐ ๊ทธ ์ผ์ด์ค๋ฅผ ๋ํ ์ผํ๊ฒ ๋ง๋ค์ด์ฃผ์ง ์์ ๊ฒ์ด ์์ฌ์ด ๋ฏ ํ๋ค. - ์ ์ฒด์ ์ผ๋ก ์ฝ๋๊ฐ ์ข ๊ธธ๊ณ ์ ๋ฆฌ๋์ง ์์ ๋๋,, ๊ฐ์ ์ด ํ์ํ๋ค.
๐ [ ์ถ๊ฐ ] 1์ฃผ์ผ ํ ๋ค์ ํ์ด๋ณด๊ธฐ
import Foundation
func solution3(_ n:Int) -> Int {
var count = 2
if n == 2 { return 1 }
else if n == 3 { return 2 }
else {
for i in 4...n {
var isPrime = true
for j in 2...Int(sqrt(Double(i))) {
if i%j == 0 { isPrime = false; break }
}
if isPrime == true { count += 1 }
}
}
return count
}
- ์ ๋ ฅ์ด 2์ผ ๋, 3์ผ ๋๋ฅผ ๋ฐ๋ก ๋นผ์ฃผ์ด ํ์๋ฅผ ์นด์ดํธ ํด์ฃผ์๋ค.
- ์ ๋ ฅ์ด 4 ์ด์์ผ ๋ ๋ถํฐ๋ ์ ๋ ฅ๋ ์๋ฅผ ์ ๊ณฑ๊ทผ๊น์ง๋ก ๋๋์ด ์์๋ฅผ ํ๋ณํด์ฃผ์๋ค.
- ํ๋ณ์ Bool ๊ฐ์ผ๋ก ํด์ฃผ์๊ณ , true์ผ ๊ฒฝ์ฐ ํ์๋ฅผ ์ถ๊ฐํด์ฃผ๋ ๋ฐฉ์์ผ๋ก ์์ฑํ๋ค.
- ์ฒซ ๋ฒ์งธ ํ์ด์ ๋น์ทํ์ง๋ง 2, 3์ผ ๋ ์ผ์ด์ค๋ฅผ ์ ์ ๋ฆฌํด์ค ๊ฒ ๊ฐ๋ค.
๋ฌธ์
'3๏ธโฃ Swift > Problem Solving' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift Algorithm] ๋ฌธ์์ด ๋ค๋ฃจ๊ธฐ ๊ธฐ๋ณธ Programmers(Lv.1) (0) | 2021.06.17 |
---|---|
[Swift Algorithm] ์์ธ์์ ๊น์๋ฐฉ ์ฐพ๊ธฐ Programmers(Lv.1) (0) | 2021.06.17 |
[Swift Algorithm] ์๋ฐ์๋ฐ์๋ฐ์๋ฐ์๋ฐ์? Programmers(Lv.1) (0) | 2021.06.14 |
[Swift Algorithm] ๋ฌธ์์ด์ ์ ์๋ก ๋ฐ๊พธ๊ธฐ Programmers(Lv.1) (0) | 2021.06.14 |
[Swift Algorithm] ์์ ์ํธ Programmers(Lv.1) (0) | 2021.06.14 |
๋๊ธ