๋ฐฑ์ค - ์ธํ์ ์ฌ์ฅ ๋ํ(Swift)
๋ฐฑ์ค - ์ธํ์ ์ฌ์ฅ ๋ํ(Swift)
๋ฌธ์ ์ค๋ช
https://www.acmicpc.net/problem/2720
2720๋ฒ: ์ธํ์ ์ฌ์ฅ ๋ํ
๊ฐ ํ ์คํธ์ผ์ด์ค์ ๋ํด ํ์ํ ์ฟผํฐ์ ๊ฐ์, ๋ค์์ ๊ฐ์, ๋์ผ์ ๊ฐ์, ํ๋์ ๊ฐ์๋ฅผ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ์ฌ ์ถ๋ ฅํ๋ค.
www.acmicpc.net
๋์ ํ์ด
๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋๋ฐ ์ด๋ ค์์ด ์์ง๋ ์์์ง๋ง ๋์ ๋๋ฆฌ ๋ด๋ถ ๊ฐ์ ์ด๊ธฐ์ 0์ผ๋ก ์ด๊ธฐํํ๊ฑฐ๋ joined๋ String๋ฐฐ์ด์๋ง ์ ์ฉํ ์ ์๋ค๋ ๊ฒ๊ณผ joined์ ๊ณต๋ฐฑ๊ฐ์ ์ฃผ๊ธฐ์ํด์๋ separator๋ณ์๋ฅผ ์จ์ผํ๋ ๋ฑ์ ๊ณ ๋ฏผ์ด ํ์ํ๋ค.
๊ทธ๋ฆฌ๊ณ ๋์ ๋๋ฆฌ์์ key๊ฐ์ ๊ธฐ์ค์ผ๋ก values๋ง ๋ฝ๊ณ ์ถ์๋๋ sortedํ ๋ค์ value๋ง ๋ฝ์ผ๋ฉด ๋๋ค.
์์๋ก [3:4, 1:2]๋ผ๋ ๋์ ๋๋ฆฌ๊ฐ ์๋ค๋ฉด
sortedํ์๋ [(key:1, value:2), (key:3, value:4)]๊ฐ ๋์จ๋ค. ์ฆ ๋์ ๋๋ฆฌ๋ฅผ ๋ฐฐ์ด๋ก ๋ง๋ค๋๋ key, value ํ ์์ผ๋ก ํํํํ๋ก ๋์ค๋ ๊ฒ์ด๋ค.
import Foundation
func findMoney(_ num: Int) -> String {
let arr = [25, 10, 5, 1]
var dic: [Int: Int] = [25: 0, 10: 0, 5: 0, 1: 0]
var num = num
var idx = 0
while num > 0 {
if num >= arr[idx] {
dic[arr[idx]] = num / arr[idx]
num = num % arr[idx]
}
idx += 1
}
return dic.sorted(by: >).map{String($0.value)}.joined(separator: " ")
}
func main() {
let n = Int(readLine()!)!
for _ in 0..<n {
let num = Int(readLine()!)!
print(findMoney(num))
}
}
main()