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

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

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

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์†Œ์ˆ˜ ๋งŒ๋“ค๊ธฐ

์ฃผ์–ด์ง„ ์ˆซ์ž ์ค‘ 3๊ฐœ์˜ ์ˆ˜๋ฅผ ๋”ํ–ˆ์„ ๋•Œ ์†Œ์ˆ˜๊ฐ€ ๋˜๋Š” ๊ฒฝ์šฐ์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ˆซ์ž๋“ค์ด ๋“ค์–ด์žˆ๋Š” ๋ฐฐ์—ด nums๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, nums์— ์žˆ๋Š” ์ˆซ์ž๋“ค ์ค‘ ์„œ๋กœ ๋‹ค๋ฅธ 3๊ฐœ๋ฅผ ๊ณจ๋ผ ๋”ํ–ˆ์„ ๋•Œ ๏ฟฝ

programmers.co.kr

Foma's ํ’€์ด

๋ฌธ์ œํ’€์ด

1. ์ด ๋ฌธ์ œ์˜ ํ•ต์‹ฌ์€ ์†Œ์ˆ˜๋ฅผ ํŒ๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€?

 

์†Œ์ˆ˜๋ฅผ ํŒ๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์€ ์†Œ์ˆ˜๊ฐ€ ์•„๋‹ ๋•Œ์˜ ๊ฒฝ์šฐ๋ฅผ ๊ตฌํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

์†Œ์ˆ˜๊ฐ€ ์•„๋‹ ๋•Œ์˜ ๊ฒฝ์šฐ๋Š” 1๊ณผ ์ž์‹ ์„ ์ œ์™ธํ•œ ์ˆซ์ž๋กœ n์„ ๋‚˜๋ˆ„์—ˆ์„ ๋•Œ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

2. ๋‹ค์ค‘ for๋ฌธ์„ ์‚ฌ์šฉํ•ด ์ค‘๋ณต์—†๋Š” 3๊ฐœ์˜ ์ˆซ์ž์˜ ํ•ฉ์„ ์ฐจ๋ก€๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”๊ฐ€?

 

๋จผ์ € ์ฒซ๋ฒˆ์งธ์ˆ˜ ๋‘๋ฒˆ์งธ์ˆ˜ ์„ธ๋ฒˆ์งธ์ˆ˜๋ฅผ ์ •ํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

์ฒซ๋ฒˆ์งธ์ˆ˜๋Š” 0๋ถ€ํ„ฐ nums์˜ -3๋ฒˆ์งธ๊นŒ์ง€ ์ฐจ๋ก€๋กœ ์„ค์ •ํ•ด์ค๋‹ˆ๋‹ค. (๋‘๋ฒˆ์งธ์™€ ์„ธ๋ฒˆ์งธ ์ˆ˜๊ฐ€ ์žˆ์–ด์•ผํ•˜๋ฏ€๋กœ -3์„ ํ•ด์ค˜์•ผํ•ฉ๋‹ˆ๋‹ค.)

 

๋‘๋ฒˆ์งธ ์ˆ˜๋Š” ์ฒซ๋ฒˆ์งธ์ˆ˜ + 1๋กœ ์„ค์ •ํ•ด์ค๋‹ˆ๋‹ค.

 

์„ธ๋ฒˆ์งธ ์ˆ˜๋Š” ๋‘๋ฒˆ์งธ์ˆ˜์˜ + 1๋กœ ์„ค์ •ํ•ด์ค€ ๋’ค ํ•ฉ๋“ค์„ ๋ชจ์•„์ค๋‹ˆ๋‹ค.

 

์ฝ”๋“œํ’€์ด

3๊ฐœ ์ˆซ์ž์˜ ํ•ฉ์„ ๋‹ด์•„์ค„ ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. ->  var sums = [Int]()

 

๊ฐ€์žฅ ๋ฐ”๊นฅ์ชฝ for๋ฌธ์˜ ๋ฒ”์œ„๋Š” 0๋ถ€ํ„ฐ nums๊ฐฏ์ˆ˜-3๋งŒํผ(<nums์˜ ๊ฐฏ์ˆ˜-2๋ณด๋‹ค ์ž‘์€) ๋ฐ˜๋ณตํ•ด์ค๋‹ˆ๋‹ค. -> for i in 0..<nums.count-2 {...}

 

๊ทธ ์•ˆ์ชฝ for๋ฌธ์˜ ๋ฒ”์œ„ ๋ฐ”๋กœ ๋ฐ”๊นฅ for๋ฌธ์˜ ์ˆซ์ž+1(i+1)์—์„œ nums์˜ ๊ฐฏ์ˆ˜๋งŒํผ ๋ฐ˜๋ณตํ•ด์ค๋‹ˆ๋‹ค. ->  for j in i+1..<nums.count {...}

 

๊ทธ ์•ˆ์ชฝ์˜ ์•ˆ์ชฝ for๋ฌธ์˜ ๋ฒ”์œ„ ๋ฐ”๋กœ ๋ฐ”๊นฅ for๋ฌธ์˜ ์ˆซ์ž+1(j+1)์—์„œ nums์˜ ๊ฐฏ์ˆ˜๋งŒํผ ๋ฐ˜๋ณตํ•ด์ค๋‹ˆ๋‹ค. -> for k in j+1..<nums.count {...}

 

์ˆซ์ž 3๊ฐœ์˜ ํ•ฉ์„ sums์— ๋‹ด์•„์ค๋‹ˆ๋‹ค. -> sums.append(nums[i] + nums[j] + nums[k])

 

๊ทธ ๋‹ค์Œ์œผ๋กœ filter์™€ isPrime์„ ์ด์šฉํ•˜์—ฌ ์†Œ์ˆ˜๊ฐ€ ๋งž๋Š” ์ˆ˜์˜ ๊ฐฏ์ˆ˜๋ฅผ ์„ผ ๋’ค ๋ฐ˜ํ™˜ํ•ด์ค๋‹ˆ๋‹ค. ->  return  sums.filter{isPrime($0)}.count

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import Foundation
 
func solution(_ nums:[Int]) -> Int {
 
 
    var sums = [Int]()
 
    for i in 0..<nums.count-2 {
        for j in i+1..<nums.count {
            for k in j+1..<nums.count {
                sums.append(nums[i] + nums[j] + nums[k])
            }
        }
    }
 
    return  sums.filter{isPrime($0)}.count
}
 
 
 
func isPrime(_ n:Int-> Bool {
    for i in 2..<n {
        if n%i == 0 {
            return false
        }
    }
    return true
}
 

 

 

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€