MUKER_DEV with iOS

[Swift] Programmers_Lv1 ์ •์ˆ˜ ์ œ๊ณฑ๊ทผ ํŒ๋ณ„ ๋ณธ๋ฌธ

๐Ÿค– ์•Œ๊ณ ๋ฆฌ์ฆ˜/programmers

[Swift] Programmers_Lv1 ์ •์ˆ˜ ์ œ๊ณฑ๊ทผ ํŒ๋ณ„

MUKER 2022. 6. 22. 13:23
์ œ ๋ฌธ์ œ ํ’€์ด๋Š” ์ตœ์„ ์˜ ํ’€์ด๊ฐ€ ์•„๋‹ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์–‘ํ•ฉ๋‹ˆ๋‹ค!

 

๋ฌธ์ œ์„ค๋ช…

์ž„์˜์˜ ์–‘์˜ ์ •์ˆ˜ n์— ๋Œ€ํ•ด, n์ด ์–ด๋–ค ์–‘์˜ ์ •์ˆ˜ x์˜ ์ œ๊ณฑ์ธ์ง€ ์•„๋‹Œ์ง€ ํŒ๋‹จํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค.
n์ด ์–‘์˜ ์ •์ˆ˜ x์˜ ์ œ๊ณฑ์ด๋ผ๋ฉด x+1์˜ ์ œ๊ณฑ์„ ๋ฆฌํ„ดํ•˜๊ณ , n์ด ์–‘์˜ ์ •์ˆ˜ x์˜ ์ œ๊ณฑ์ด ์•„๋‹ˆ๋ผ๋ฉด -1์„ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•˜์„ธ์š”.

 

์ œํ•œ ์กฐ๊ฑด

  • n์€ 1์ด์ƒ, 50000000000000 ์ดํ•˜์ธ ์–‘์˜ ์ •์ˆ˜์ž…๋‹ˆ๋‹ค.

 

์ž…์ถœ๋ ฅ ์˜ˆ

n return
121 144
3 -1

๋ฌธ์ œ ๋ถ„์„

1. ์ œ๊ณฑ๊ทผ์„ ํŒ๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด sqrt() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉ.

2. ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด Foundation์„ import ํ•ด์•ผ ํ•จ.

3. ์–‘์˜ ์ •์ˆ˜๋ฅผ ๊ฐ€์ง€๋Š” ๊ฐ’์ด๋ผ๋ฉด + 1์„ ํ•˜์—ฌ ์ œ๊ณฑํ•˜๊ณ , ์†Œ์ˆ˜์ ์„ ๊ฐ€์ง€๋Š” ๊ฐ’์ด ๋‚˜์˜จ๋‹ค๋ฉด -1์„ ๋ฆฌํ„ดํ•จ.

 

Solution.swift

import Foundation

func solution(_ n:Int64) -> Int64 {
    
    // ๊ฒฐ๊ณผ๊ฐ’์„ ๋‹ด์„ ๋ณ€์ˆ˜ ์„ ์–ธ
    var result: Int64 = 0
    
    // sqrt()๋ฅผ ์‚ฌ์šฉํ•ด n์˜ ์ œ๊ณฑ๊ทผ์„ ๊ตฌํ•จ
    let number = sqrt(Double(n))
    
    // Doubleํ˜•์˜ number์— ์†Œ์ˆซ์ ๊ฐ’์ด ์žˆ๋‹ค๋ฉด
    // Int64๋กœ number๋ฅผ ๊ฐ์Œ‹์„๋•Œ ์†Œ์ˆซ์ ๊ฐ’์ด ๋‹ค ๋–จ์–ด์ ธ ๋‚˜๊ฐ€๊ฒŒ ๋จ
    // ๊ฐ’ ๋น„๊ต๋ฅผ ์œ„ํ•ด ๋‹ค์‹œ Doubleํ˜•์œผ๋กœ ์„ ์–ธํ•จ
    if number == Double(Int64(number)) {
        result = Int64((number + 1) * (number + 1))
    } else {
       result = -1 
    }
    
    return result
    
}

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ธ๊ธฐ ํ’€์ด

import Foundation
func solution(_ n:Int64) -> Int64 {
    let t = Int64(sqrt(Double(n)))
    return t * t == n ? (t+1)*(t+1) : -1
}