λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
3️⃣ Swift/Problem Solving

[Swift Algorithm] μ •μˆ˜ 제곱근 νŒλ³„ Programmers(Lv.1)

by seolhee2750 2021. 6. 7.
문제 풀이

μž„μ˜μ˜ μ–‘μ˜ μ •μˆ˜ n에 λŒ€ν•΄, n이 μ–΄λ–€ μ–‘μ˜ μ •μˆ˜ x의 μ œκ³±μΈμ§€ μ•„λ‹Œμ§€ νŒλ‹¨ν•˜λ € ν•©λ‹ˆλ‹€.
n이 μ–‘μ˜ μ •μˆ˜ x의 제곱이라면 x+1의 μ œκ³±μ„ λ¦¬ν„΄ν•˜κ³ , n이 μ–‘μ˜ μ •μˆ˜ x의 제곱이 μ•„λ‹ˆλΌλ©΄ -1을 λ¦¬ν„΄ν•˜λŠ” ν•¨μˆ˜λ₯Ό μ™„μ„±ν•˜μ„Έμš”.

 

μ œν•œ 쑰건
  • n은 1이상, 50000000000000 μ΄ν•˜μΈ μ–‘μ˜ μ •μˆ˜μž…λ‹ˆλ‹€.

 

μž…μΆœλ ₯ 예
n return
121 144
3 -1

 

λ‚΄ 문제 풀이
import Foundation

func solution(_ n:Int64) -> Int64 {
    let x = Int64(sqrt(Double(n)))
    return x * x == n ? (x + 1) * (x + 1) : -1
}
  • sqrt ν•¨μˆ˜λ₯Ό μ΄μš©ν•˜μ—¬ μž…λ ₯받은 수의 μ œκ³±κ·Όμ„ κ΅¬ν•˜μ˜€μŒ
  • κ΅¬ν•œ μ œκ³±κ·Όμ„ λ‹€μ‹œ κ³±ν–ˆμ„ λ•Œ n이 좜λ ₯λ˜λŠ”μ§€ κ²€μ‚¬ν•˜μ—¬ κ²°κ³Όλ₯Ό λ¦¬ν„΄ν•˜μ˜€μŒ

 

πŸ’‘ ν”Όλ“œλ°±
  • sqrt ν•¨μˆ˜μ— λŒ€ν•΄μ„œ 배울 수 μžˆμ—ˆλ‹€.
    sqrt ν•¨μˆ˜μ— λŒ€ν•΄ μ œλŒ€λ‘œ κ³΅λΆ€ν•˜μ—¬ 정리 κ²Œμ‹œκΈ€μ„ μž‘μ„±ν•΄λ΄μ•Όκ² λ‹€.
  • λ°”λ‘œ 직전 κ²Œμ‹œκΈ€μΈ μ •μˆ˜ λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ μ •λ ¬ν•˜κΈ° λ¬Έμ œμ— μ΄μ–΄μ„œ 또 Int64κ°€ λ“±μž₯ν–ˆλ‹€.
    빨리 곡뢀λ₯Ό 해봐야겠닀,,

 


 

문제

https://programmers.co.kr/learn/courses/30/lessons/12934

λŒ“κΈ€