[๐Ÿ“ iOS TIL] #7 ... ๐ŸŽ Swift ๏ผ† Algorithm ๐Ÿ–ฅ๏ธ

TaeUkยท2024๋…„ 3์›” 4์ผ
0

๐ŸŽ iOS TIL

๋ชฉ๋ก ๋ณด๊ธฐ
6/18
post-thumbnail

[level 1] ์ •์ˆ˜ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ๋ฐฐ์น˜ํ•˜๊ธฐ - 12933

  • ๋ฌธ์ œ ์„ค๋ช…
    ํ•จ์ˆ˜ solution์€ ์ •์ˆ˜ n์„ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ž…๋ ฅ๋ฐ›์Šต๋‹ˆ๋‹ค. n์˜ ๊ฐ ์ž๋ฆฟ์ˆ˜๋ฅผ ํฐ๊ฒƒ๋ถ€ํ„ฐ ์ž‘์€ ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ ์ƒˆ๋กœ์šด ์ •์ˆ˜๋ฅผ ๋ฆฌํ„ดํ•ด์ฃผ์„ธ์š”. ์˜ˆ๋ฅผ๋“ค์–ด n์ด 118372๋ฉด 873211์„ ๋ฆฌํ„ดํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
๋ฌธ์ œ ํ’€์ด

func solution(_ n:Int64) -> Int64 {
    var val = String(Int64(n)).map{Int64(String($0))!}
    
    val.sort(by: >)
    
    var ans = val.map(String.init).joined()
    
    return Int64(ans)!
}

solution ํ•จ์ˆ˜ ์ฒซ ์ค„์—์„œ val์„ ์‚ดํŽด๋ณด๋ฉด map ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. Int64 ํ˜•ํƒœ๋กœ ์ž…๋ ฅ๋˜๋Š” ์ž…๋ ฅ๊ฐ’ n์„ ๊ฐ ์ž๋ฆฟ์ˆ˜๋งˆ๋‹ค ๋ถ„๋ฆฌํ•˜์—ฌ String ํ˜•ํƒœ๋กœ ์ •๋ฆฌํ•˜์˜€๋‹ค. ์ดํ›„ map ํ•จ์ˆ˜๊ฐ€ ๋ฐฐ์—ด๋กœ ๊ฒฐ๊ณผ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ ์„ ํ™œ์šฉํ•˜์—ฌ sort ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ๋ฐฐ์—ด์„ ์ •๋ ฌํ•ด์ฃผ์—ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ ๋ฐฐ์—ด์— ๊ฐ ์ž๋ฆฟ์ˆ˜๋งˆ๋‹ค ๋ถ„๋ฆฌ๋˜์–ด ์žˆ๋Š” val ๊ฐ’์„ String ํƒ€์ž…์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•ด์ฃผ๊ณ  joined()๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ชจ๋“  ๊ฐ’์„ ๋ถ™์—ฌ์ฃผ์—ˆ๋‹ค.

์ง„์งœ!! ์ง„์งœ! ๋งˆ์ง€๋ง‰์œผ๋กœ ๊ฒฐ๊ณผ๊ฐ’ ans๋ฅผ Int64๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ solution์˜ ๊ฒฐ๊ณผ๊ฐ’์œผ๋กœ ๋ฐ˜ํ™˜ํ•˜์˜€๋‹ค!


[level 1] ์ •์ˆ˜ ์ œ๊ณฑ๊ทผ ํŒ๋ณ„ - 12934

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

import Foundation

func solution(_ n:Int64) -> Int64 {
    var ans: Int64 = 0
    var val: Int64 = Int64(sqrt(Double(n)))

    ans = (val*val == n) ? (val+1)*(val+1) : -1
    
    return ans
}

ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ ๋”์šฑ ํŽธํ•˜๊ฒŒ ํ’€๊ธฐ ์œ„ํ•ด ์ œ๊ณฑ์— ๋Œ€ํ•œ sqrt ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋‹ค. ์ด๋•Œ, sqrt ํ•จ์ˆ˜๋Š” ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ์„ Double์„ ๊ธฐ์ค€์œผ๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์œ„์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด ์ฝ”๋“œ๋ฅผ ๊ตฌ์„ฑํ•˜์˜€๋‹ค.

์ดํ›„, ์‚ผํ•ญ์—ฐ์‚ฐ์ž๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฌธ์ œ ์กฐ๊ฑด์— ๋งž๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์˜€๋‹ค.


[level 1] ํ•˜์ƒค๋“œ ์ˆ˜ - 12947

  • ๋ฌธ์ œ ์„ค๋ช…
    ์–‘์˜ ์ •์ˆ˜ x๊ฐ€ ํ•˜์ƒค๋“œ ์ˆ˜์ด๋ ค๋ฉด x์˜ ์ž๋ฆฟ์ˆ˜์˜ ํ•ฉ์œผ๋กœ x๊ฐ€ ๋‚˜๋ˆ„์–ด์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 18์˜ ์ž๋ฆฟ์ˆ˜ ํ•ฉ์€ 1+8=9์ด๊ณ , 18์€ 9๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋ฏ€๋กœ 18์€ ํ•˜์ƒค๋“œ ์ˆ˜์ž…๋‹ˆ๋‹ค. ์ž์—ฐ์ˆ˜ x๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ x๊ฐ€ ํ•˜์ƒค๋“œ ์ˆ˜์ธ์ง€ ์•„๋‹Œ์ง€ ๊ฒ€์‚ฌํ•˜๋Š” ํ•จ์ˆ˜, solution์„ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.
๋ฌธ์ œ ํ’€์ด

func solution(_ x:Int) -> Bool {
    var val1 = String(x).map{Int(String($0))!}
    var val2: Int = 0
    
    for i in 0..<val1.count {
        val2 += val1[i]
    }
    
    return x % val2 == 0 ? true : false
}

ํ•ด๋‹น ๋ฌธ์ œ๋„ ๋งจ ์ฒ˜์Œ ๋ฌธ์ œ์™€ ๋น„์Šทํ•˜๊ฒŒ ์ ‘๊ทผํ•˜์˜€๋‹ค. val1 ๊ฐ’์„ ๊ฐ ์ž๋ฆฟ์ˆ˜๋งˆ๋‹ค ์ €์žฅ๋œ ๋ฐฐ์—ด๋กœ ๋งŒ๋“ค์–ด val2์— ๊ฐ ์ž๋ฆฟ์ˆ˜ ๊ฐ’์„ ๋”ํ•ด์ฃผ์—ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  return์—์„œ ์‚ผํ•ญ์—ฐ์‚ฐ์ž๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์˜€๋‹ค.


๋‚ด๋ฐฐ์บ  ๋ณธ์บ ํ”„ ์‹œ์ž‘! ๐ŸŽ‰

์ง€๊ธˆ๊นŒ์ง€ ์‚ฌ์ „์บ ํ”„ ๊ธฐ๊ฐ„์ด์˜€๊ณ , ์ €๋ฒˆ์ฃผ๋„ ์˜จ๋ณด๋”ฉ ๊ธฐ๊ฐ„์œผ๋กœ ์‹ค์งˆ์ ์ธ ํ”„๋กœ์ ํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜์ง„ ์•Š์•˜๋‹ค.

์•„๋งˆ ํŒ€ํ”„๋กœ์ ํŠธ๋ฅผ ํ•œ๋‹ค๊ณ  ํ•ด๋„, ๊ฐœ๋ฐœ ์ง€์‹์ด ์—†์–ด ์ง„ํ–‰์— ์–ด๋ ค์›€์„ ๊ฒช์—ˆ์„ ๊ฒƒ์ด๋‹ค... ๐Ÿฅฒ

ํ•˜์ง€๋งŒ ์˜ค๋Š˜๋ถ€ํ„ฐ ๋ณธ์บ ํ”„๊ฐ€ ์‹œ์ž‘๋˜์–ด ๋”์šฑ ๋„์›€๋˜๋Š” ๊ธฐ๋Œ€๊ฐ€ ๋œ๋‹ค!! ๐Ÿ˜‹

0๊ฐœ์˜ ๋Œ“๊ธ€