MUKER_DEV with iOS

[swift] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์—ฐ์†๋œ ์ˆ˜์˜ ํ•ฉ ๋ณธ๋ฌธ

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

[swift] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์—ฐ์†๋œ ์ˆ˜์˜ ํ•ฉ

MUKER 2023. 1. 5. 16:14
 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr


๋ฌธ์ œํ’€์ด๋ฅผ ์ง๊ด€์ ์œผ๋กœ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ณ ์ฐจํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ํ’€์ด์™€
๊ณ ์ฐจํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ ํ’€์ด๋กœ ๋‚˜๋ˆ„์–ด ๊ณต๋ถ€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
- ๋ฌธ์ œ์— ๋”ฐ๋ผ ํ•˜๋‚˜์˜ ํ’€์ด๋งŒ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๊ณ ์ฐจํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ํ’€์ด

import Foundation

func solution(_ num:Int, _ total:Int) -> [Int] {
    var result = [total/num]
    var count = 1
    for i in 1..<num {
        if i % 2 != 0 {
            result.append(total/num + count)
        } else {
            result.append(total/num - count)
            count += 1
        }
    }
    return result.sorted()
}
  • total / num ์˜ ๊ฐ’์„ ์—ฐ์†๋œ ์ˆ˜์˜ ์ค‘์‹ฌ๊ฐ’์œผ๋กœ ๋‘๊ณ 
  • ๋ฐ˜๋ณต๋ฌธ์„ ํ†ตํ•ด ์ค‘์‹ฌ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ๋‘๊ณ  +1, -1, +2, -2... ์ฐจ๋ก€๋Œ€๋กœ num์˜ ๊ฐ’๋งŒํผ ๋ฐ˜๋ณต ํšŸ์ˆ˜๋ฅผ ๋Œ๋ฆฝ๋‹ˆ๋‹ค.
  • ํ•ด๋‹น ๋ฐฐ์—ด์„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๋ฉด ์›ํ•˜๋Š” result๊ฐ’์ด ๋‚˜์˜ต๋‹ˆ๋‹ค.

 

๊ณ ์ฐจํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ ํ’€์ด

import Foundation

func solution(_ num:Int, _ total:Int) -> [Int] {
    var i = (total - (num * (1 + num) / 2)) / num
    return (1...num).map { $0 + i }
}
  • ๋“ฑ์ฐจ์ˆ˜์—ด์˜ ํ•ฉ๊ณต์‹์„ ์‚ฌ์šฉํ•ด์„œ ํ’€์ดํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๋“ฑ์ฐจ์ˆ˜์—ด์˜ ํ•ฉ๊ณต์‹์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.
ํ•ญ์˜ ๊ฐœ์ˆ˜ * (์ฒซํ•ญ + ๋ํ•ญ) / 2
  • total - (๋“ฑ์ฐจ์ˆ˜์—ด ํ•ฉ๊ณต์‹) / num ๋ฅผ ํ•˜๋ฉด ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๋ฐฐ์—ด์˜ ์ฒซ๋ฒˆ์งธ ๊ฐ’๋ณด๋‹ค 1์ด ์ž‘์€ ์ˆซ์ž๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  • ๊ทธ๋Ÿผ ํ•ญ์˜ ๊ฐœ์ˆ˜๋งŒํผ ๋ฐ˜๋ณตํ•˜๋ฉฐ ๊ฐ ๊ฐ’๋งˆ๋‹ค ์ฒซ๋ฒˆ์งธ ๊ฐ’์„ ๋”ํ•ด์„œ ๋ฐฐ์—ด๋กœ ๋ฆฌํ„ดํ•˜๋ฉด ์›ํ•˜๋Š” result ๋ฐฐ์—ด์ด ๋‚˜์˜ต๋‹ˆ๋‹ค.