๐Ÿง‘๐Ÿป‍๐Ÿ’ป Coding Test/โŒจ๏ธ Programmers

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

EarthSea 2024. 3. 27. 09:30

 

 

๐Ÿ„ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋ฌธ์ œ ํ’€์ด

โœ๐Ÿป Github

๋ฌธ์ œ ํ’€์ด github ๋งํฌ

 

 

๋ฌธ์ œ ์„ค๋ช…

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

 

 

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

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

 

์ œํ•œ์‚ฌํ•ญ

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

 

์ž…์ถœ๋ ฅ ์˜ˆ

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

 

๋ฌธ์ œ ํ’€์ด

๋‚˜์˜ ํ’€์ด

import Foundation

func solution(_ brown:Int, _ yellow:Int) -> [Int] {
    
    let n = brown + yellow
    
    for i in 3...Int(sqrt(Double(n))) {
        if n % i == 0 {
            let x = n / i, y = i
            if brown == ( 2 * x + 2 * y - 4 ) {
                return [x, y]
            }
        }
    }
    
    return []
}

 

์šฐ์„  ๋ฌธ์ œ๋ฅผ ํ’€๊ธฐ ์œ„ํ•ด์„œ ๋ฌธ์ œ๋ฅผ ์ดํ•ดํ•˜๋Š”๋ฐ ์‹œ๊ฐ„์ด ์ข€ ๊ฑธ๋ ธ๋˜ ๊ฒƒ ๊ฐ™๋‹ค.

๊ทธ๋ž˜์„œ ๋ญ˜ ๊ตฌํ•˜๋ผ๊ณ  ํ•˜๋Š” ๊ฑฐ์ง€?!

 

์˜ˆ์‹œ๋ฅผ ๋ณด์ž๋งˆ์ž ์•ฝ์ˆ˜ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ๋ผ๋Š” ๊ฒƒ์„ ์ง๊ฐํ–ˆ๋‹ค.

๋…ธ๋ž€์ƒ‰ ์นดํŽซ์˜ ๊ฐ’์ด ํ•ญ์ƒ 1๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๋‹ค๋ผ๋Š” ์กฐ๊ฑด์ด ์ฃผ์–ด์ ธ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ œ์ผ ์ž‘์€ ์•ฝ์ˆ˜์˜ ๊ฐ’์€ 3์ผ ๊ฒƒ์ด๋‹ค.

3๋ถ€ํ„ฐ sqrt(n)๊นŒ์ง€๋กœ ๊ณ„์‚ฐ์„ ํ•ด ์™„์ „ํƒ์ƒ‰์œผ๋กœ ํ’€๊ธฐ๋กœ ํ–ˆ๋‹ค.

( ์ ์œผ๋ฉด์„œ ํ•ด์•ผ ๋จธ๋ฆฌ๊ฐ€ ๊ตด๋Ÿฌ๊ฐ€๋Š” 1์ธ.. )

์ตœ๋Œ“๊ฐ’์ธ 200,000 + 5,000 ์˜ ๊ฐ’์€ 205,000 ์ด๋ฏ€๋กœ sqrt(205,000) ๋ณด๋‹ค ์ž‘์€ ๊ฐ€์žฅ ํฐ ์ •์ˆ˜๋Š” 452 ์˜€๊ธฐ ๋•Œ๋ฌธ์— 450ํšŒ์˜ for๋ฌธ์ด๋ผ๋ฉด ์ถฉ๋ถ„ํžˆ ๋Œ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค!

 

์นดํŽซ์— ๋‘˜๋Ÿฌ์‹ธ์ธ brown ๊ฐ’์€ ์˜ˆ์‹œ๋งŒ ๋ช‡ ๊ฐœ๋งŒ ๊ณ„์‚ฐํ•ด๋ด๋„ ์ผ๋ฐ˜ํ™” ๊ณต์‹์ด ๋‚˜์™”๋‹ค → ( 2 * x + 2 * y - 4 )

ํ‘ผ ๊ฒฐ๊ณผ ์˜ˆ์ƒ๋Œ€๋กœ ์ •๋‹ต! 10๋ถ„์ •๋„ ๊ฑธ๋ฆฐ ๊ฒƒ ๊ฐ™๋‹ค!

 

 

๋‹ค๋ฅธ ์‚ฌ๋žŒ ํ’€์ด

import Foundation

func solution(_ brown: Int, _ red: Int) -> [Int] {
    for n in (1...Int(sqrt(Double(red)))).reversed() {
        if (red/n+2) * (n+2) == (brown + red) {
            return [(red/n+2), n+2]
        }
    }
    return [0, 0]
}

์™œ ๊ตณ์ด reversed๋ฅผ ํ•œ์ง€ ์˜๋ฌธ์ด๋‹ค. ์ถœ๋ ฅ๋งŒ ๋ฐ˜๋Œ€๋กœ ํ•ด๋„ ๋ ํ…๋ฐ!

์ƒˆ๋กœ์šด ๊ณต์‹์„ ์ฐพ์•„์„œ ํ‘ผ ๊ฒƒ ๊ฐ™์•„์„œ ์‹ ๊ธฐํ–ˆ๋‹ค!