๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“– Problem Solution/Programmers

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์†Œ์ˆ˜ ์ฐพ๊ธฐ Swift

by Fomagran ๐Ÿ’ป 2020. 2. 16.
728x90
๋ฐ˜์‘ํ˜•

Youtube

 

์ œ๊ฐ€ ์ง์ ‘ ์ œ์ž‘ํ•œ ์˜์ƒ์ž…๋‹ˆ๋‹ค!

 

์˜์ƒ์œผ๋กœ ๋ณด์‹œ๋ฉด ์ดํ•ดํ•˜์‹œ๊ธฐ ํ›จ์”ฌ ์ˆ˜์›”ํ•˜์‹ค๊ฑฐ์—์š”!!

 


๋ฌธ์ œ ์„ค๋ช…

1๋ถ€ํ„ฐ ์ž…๋ ฅ๋ฐ›์€ ์ˆซ์ž n ์‚ฌ์ด์— ์žˆ๋Š” ์†Œ์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜, solution์„ ๋งŒ๋“ค์–ด ๋ณด์„ธ์š”.

์†Œ์ˆ˜๋Š” 1๊ณผ ์ž๊ธฐ ์ž์‹ ์œผ๋กœ๋งŒ ๋‚˜๋ˆ„์–ด์ง€๋Š” ์ˆ˜๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
(1์€ ์†Œ์ˆ˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.)

์ œํ•œ ์กฐ๊ฑด

  • n์€ 2์ด์ƒ 1000000์ดํ•˜์˜ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

n result
10 4
5 3

ํ’€์ด: 1๋นผ๊ณ  ์ฆ‰ 2๋ถ€ํ„ฐ n๊นŒ์ง€ ์ค‘ ์ฐจ๋ก€๋Œ€๋กœ i๋ฅผ ๋Œ€์ž…ํ•˜๊ณ  i์ค‘์— 1ํ•˜๊ณ  ์ž๊ธฐ ์ž์‹  ์ œ์™ธํ•œ ๋‹ค๋ฅธ ๊ฑธ๋กœ ๋‚˜๋ˆ ์ง€๋ฉด continue ๋ฐ”๊นฅ์ชฝ Loop๋ฅผ ํ•˜๊ฒŒ ํ–ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ–ˆ๋”๋‹ˆ ๋งŒ์•ฝ 1๋ถ€ํ„ฐ 10000๊นŒ์ง€๋ผ๋ฉด 10000๋ฒˆ์„ ๋ฐ˜๋ณตํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด๊ฒƒ์€ ์•„์ฃผ ํšจ์œจ์„ฑ์ด ์—†์„ ๋ฟ๋”๋Ÿฌ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚œ๋‹ค.

์†”๋ฃจ์…˜ 2

1
2
3
4
5
6
7
8
9
10
11
12
func solution2(_ n:Int-> Int {
    var total = 0
    Loop :for i in 2...n {
        for j in 2...i{
            if i%j == 0 && j != i{
               continue Loop
            }
            }
        total += 1
        }
    return total
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter

์ด๋Ÿฐ ์‹์œผ๋กœ ํ’€์–ด์•ผํ•˜๋Š”๋ฐ

์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด๋ผ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ํ’€์–ด์•ผ ํ•œ๋‹ค.

๋ฐฉ๋ฒ•์€ ์šฐ์„  Array์˜ ํฌ๊ธฐ๋ฅผ ๋ฏธ๋ฆฌ ์ •ํ•ด์ค€ ๋’ค ์•ˆ์—๋‹ค๊ฐ€ ์ „๋ถ€ false๋ฅผ ์ง‘์–ด๋„ฃ๋Š”๋‹ค. n+1๋กœ ํ•˜๋Š” ์ด์œ ๋Š” ๋ฐฐ์—ด์ด 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๊ทธ๋ ‡๊ฒŒ ํ•œ ๋’ค 1๋นผ๊ณ  2๋ถ€ํ„ฐ n๊นŒ์ง€ ์ค‘ false์ธ ๊ฐ’์ด ์žˆ๋‹ค๋ฉด ์นด์šดํŠธ๋ฅผ +1ํ•ด์ค€ ๋’ค i์˜ ๋ฐฐ์ˆ˜๋ฅผ ๋ชจ๋‘ true๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค.

ํ•œ๋ฒˆ์— ์ฐจ๋ก€๋Œ€๋กœ ์†Œ์ˆ˜์˜ ๋ฐฐ์ˆ˜๋ฅผ true๋กœ ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๊ฐ„์„ ํฌ๊ฒŒ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

์ด๋ ‡๊ฒŒ ์ฐจ๋ก€์ฐจ๋ก€ ์†Œ์ˆ˜๋“ค์˜ ๋ฐฐ์ˆ˜๋ฅผ ์ฒด๋กœ ๊ฑธ๋Ÿฌ๋‚ด๋Š” ๋ฐฉ๋ฒ•์ด ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด๋ผ๋Š” ๊ฒƒ์ด๋‹ค.

๋ฐฐ์ˆ˜๋ฅผ ํ•œ ๋ฒˆ์— ์—†์• ๋Š” ๋ฐฉ๋ฒ•์ด ๋ฐ”๋กœ for stride๊ตฌ๋ฌธ์ธ๋ฐ from์€ ~๋ถ€ํ„ฐ through๋Š” ~๊นŒ์ง€ by๋Š” ~์”ฉ ๊ณ ๋กœ ์†Œ์ˆ˜๋ถ€ํ„ฐ n๊นŒ์ง€ ์†Œ์ˆ˜์˜ ๋ฐฐ์ˆ˜๋งŒํผ ๋ชจ๋‘ ํŠธ๋ฃจ๋กœ ๋ฐ”๊ฟ”์ค˜๋ผ๋Š” ๊ฑฐ๋‹ค.


์†”๋ฃจ์…˜ 1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
func solution1(_ n: Int-> Int {
    var count = 0
    var array = Array.init(repeating: false, count: n+1)
    
    for i in 2...n {
        if array[i] == false {
            count += 1
            
            for j in stride(from: i, through: n, by: i) {
               array[j] = true
            }
        }
    }
    return count
}
 
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter

์‹œ๊ฐ„ ๋น„๊ต 10000์„ ๋Œ€์ž…ํ–ˆ์„ ๋•Œ

์—๋ผํ† ์Šค ํ…Œ๋„ค์Šค์˜ ์ฒด๋กœ ํ‘ผ ์†”๋ฃจ์…˜ 1์€ 0.2์ดˆ๊ฐ€ ๊ฑธ๋ฆฌ๋Š” ๋ฐ˜๋ฉด

๊ทธ๋ƒฅ ๋…ธ๊ฐ€๋‹ค ํ˜•์‹์œผ๋กœ ์“ด ์†”๋ฃจ์…˜ 2๋Š” 3์ดˆ๊ฐ€ ๊ฑธ๋ฆฐ๋‹ค.

 

10๋งŒ์„ ๋Œ€์ž…ํ–ˆ์„ ๊ฒฝ์šฐ

์†”๋ฃจ์…˜ 1์€ 2์ดˆ

์†”๋ฃจ์…˜ 2๋Š” 264์ดˆ๊ฐ€ ๊ฑธ๋ฆฐ๋‹ค.

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€