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

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์นดํŽซ Swift

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

๋ฌธ์ œ ์„ค๋ช…

Leo๋Š” ์นดํŽซ์„ ์‚ฌ๋Ÿฌ ๊ฐ”๋‹ค๊ฐ€ ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์ค‘์•™์—๋Š” ๋…ธ๋ž€์ƒ‰์œผ๋กœ ์น ํ•ด์ ธ ์žˆ๊ณ  ํ…Œ๋‘๋ฆฌ 1์ค„์€ ๊ฐˆ์ƒ‰์œผ๋กœ ์น ํ•ด์ ธ ์žˆ๋Š” ๊ฒฉ์ž ๋ชจ์–‘ ์นดํŽซ์„ ๋ดค์Šต๋‹ˆ๋‹ค.

Leo๋Š” ์ง‘์œผ๋กœ ๋Œ์•„์™€์„œ ์•„๊นŒ ๋ณธ ์นดํŽซ์˜ ๋…ธ๋ž€์ƒ‰๊ณผ ๊ฐˆ์ƒ‰์œผ๋กœ ์ƒ‰์น ๋œ ๊ฒฉ์ž์˜ ๊ฐœ์ˆ˜๋Š” ๊ธฐ์–ตํ–ˆ์ง€๋งŒ, ์ „์ฒด ์นดํŽซ์˜ ํฌ๊ธฐ๋Š” ๊ธฐ์–ตํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

Leo๊ฐ€ ๋ณธ ์นดํŽซ์—์„œ ๊ฐˆ์ƒ‰ ๊ฒฉ์ž์˜ ์ˆ˜ brown, ๋…ธ๋ž€์ƒ‰ ๊ฒฉ์ž์˜ ์ˆ˜ yellow๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ ์นดํŽซ์˜ ๊ฐ€๋กœ, ์„ธ๋กœ ํฌ๊ธฐ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ๋ฐฐ์—ด์— ๋‹ด์•„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

์ œํ•œ์‚ฌํ•ญ

  • ๊ฐˆ์ƒ‰ ๊ฒฉ์ž์˜ ์ˆ˜ brown์€ 8 ์ด์ƒ 5,000 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • ๋…ธ๋ž€์ƒ‰ ๊ฒฉ์ž์˜ ์ˆ˜ yellow๋Š” 1 ์ด์ƒ 2,000,000 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • ์นดํŽซ์˜ ๊ฐ€๋กœ ๊ธธ์ด๋Š” ์„ธ๋กœ ๊ธธ์ด์™€ ๊ฐ™๊ฑฐ๋‚˜, ์„ธ๋กœ ๊ธธ์ด๋ณด๋‹ค ๊น๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

brown yellow return
8 1 [3, 3]
24 24 [8, 6]
10 2 [4, 3]

ํ’€์ด: ์ด๋ฒˆ ๋ฌธ์ œ๋Š” ์™„์ „ํƒ์ƒ‰์ž…๋‹ˆ๋‹ค.

์šฐ์„  brown๊ณผ yellow์˜ ํ•ฉ์ด ๊ณง ์ „์ฒด ์‚ฌ๊ฐํ˜•์˜ ํฌ๊ธฐ๊ฐ€ ๋˜๋ฏ€๋กœ sum์„ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. -> let sum = brown + yellow

๊ทธ๋ฆฌ๊ณค ๊ฐ€๋กœ์™€ ์„ธ๋กœ๋ฅผ ๋œปํ•˜๋Š” x,y ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. -> var x = Int(),var y = Int()

๊ทธ๋ฆฌ๊ณ  1๋ถ€ํ„ฐ sum๊นŒ์ง€ ์ค‘์— ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋Š” ์ˆ˜๋ฅผ y๋กœ ํ•˜๊ณ  ๋‚˜๋ˆ„์–ด์ง„ ์ˆ˜(sum/i)๋ฅผ x๋กœ ํ•˜๋ฉด ๊ฐ€๋กœ์™€ ์„ธ๋กœ๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. -> for i in 1...sum{ if sum%i == 0{ x = sum/i y = i }

๊ทธ๋ฆฌ๊ณค yellow๋Š” (x-2)๊ณฑํ•˜๊ธฐ(y-2)์ž…๋‹ˆ๋‹ค.

(x-2)๊ณฑํ•˜๊ธฐ(y-2)๊ฐ€ yellow๊ฐ€ ๋œ๋‹ค๋ฉด for๋ฌธ์„ ๋ฉˆ์ถฐ์ฃผ๊ณ  ->  if (x-2)*(y-2== yellow {   break  }

x,y๋ฅผ ๋ฐ˜ํ™˜ํ•ด์ค๋‹ˆ๋‹ค. ->  return [x,y]

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import Foundation
 
func solution(_ brown:Int, _ yellow:Int-> [Int] {
    let sum = brown + yellow
    var x = Int()
    var y = Int()
    for i in 1...sum{
        if sum%i == 0{
            x = sum/i
            y = i
        }
        if (x-2)*(y-2== yellow {
            break
        }
    }
    return [x,y]
}

 

 

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€