๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โŒจ๏ธ Language/swift

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค LV.1] ์†Œ์ˆ˜ ์ฐพ๊ธฐ

by hyebin (Helia) 2023. 2. 7.
๋ฐ˜์‘ํ˜•
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค 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์˜ ๋ฐฐ์ˆ˜๋Š” ๊ตฌ๋ฌธ์„ ๋™์ž‘ํ•˜์ง€ ๋ชปํ•œ๋‹ค.
๋ฐ˜์‘ํ˜•