๋ฌธ์ ์ค๋ช
์ค๊ท๊ฐ ๊ฐ์ง๊ณ ์๋ ๋์ ์ ์ด N์ข ๋ฅ์ด๊ณ , ๊ฐ๊ฐ์ ๋์ ์ ๋งค์ฐ ๋ง์ด ๊ฐ์ง๊ณ ์๋ค.
๋์ ์ ์ ์ ํ ์ฌ์ฉํด์ ๊ทธ ๊ฐ์น์ ํฉ์ K๋ก ๋ง๋ค๋ ค๊ณ ํ๋ค. ์ด๋ ํ์ํ ๋์ ๊ฐ์์ ์ต์๊ฐ์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ N๊ณผ K๊ฐ ์ฃผ์ด์ง๋ค. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000)
๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ๋์ ์ ๊ฐ์น Ai๊ฐ ์ค๋ฆ์ฐจ์์ผ๋ก ์ฃผ์ด์ง๋ค. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2์ธ ๊ฒฝ์ฐ์ Ai๋ Ai-1์ ๋ฐฐ์)
์ถ๋ ฅ
์ฒซ์งธ ์ค์ K์์ ๋ง๋๋๋ฐ ํ์ํ ๋์ ๊ฐ์์ ์ต์๊ฐ์ ์ถ๋ ฅํ๋ค.
์ ์ถ๋ ฅ ์
์ ๋ ฅ
10 4200
1
5
10
50
100
500
1000
5000
10000
50000
์ถ๋ ฅ
6
๋ด ๋ฌธ์ ํ์ด
import Foundation
let info = readLine()!.split(separator: " ").map({Int(String($0))!})
var money = [Int]()
var left = info[1]
var answer = 0
for _ in 0..<info[0] {
let input = Int(readLine()!)!
money.append(input)
}
while left > 0 {
answer += left / money.last!
left = left % money.removeLast()
}
print(answer)
์ด ๋ฌธ์ ๋ ๊ทธ๋ฆฌ๋!
- ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฅ๋๋ ๋์ ๋จ์๋ฅผ money ๋ฐฐ์ด์ ์ฐจ๋ก๋ก ์ ์ฅํ๋ค. (for๋ฌธ)
- info[1]๋ก ์ ๋ ฅ๋ ๋ ์ก์๋ฅผ left ๋ณ์์ ๋ด์์ฃผ์๋ค. ์ฐ์ฐ์ ๋ฐ๋ณตํ๋ฉฐ ๋จ์ ์ก์๋ฅผ ๋ด๋ ๋ณ์์ด๋ค.
- while ๋ฌธ์์๋ left ๋ณ์์ ๋จ์ ๋์ด 0๋ณด๋ค ํด ๋ ๋ฐ๋ณตํ๊ฒ ํด์คฌ๊ณ ,
๊ฒฐ๊ณผ๋ฅผ ๋ด๋ answer์, ๋จ์ ๋ left๋ฅผ money ๋ฐฐ์ด์์ ๊ฐ์ฅ ํฐ ์ก์(๋ง์ง๋ง ์์)๋ก ๋๋ ๊ฒฐ๊ณผ๋ฅผ ๋ํ๋ค.
๊ทธ๋ฆฌ๊ณ ๋จ์ ๋์ ์ ๋ฐ์ดํธํ๋๋ฐ, left๋ฅผ money ๋ฐฐ์ด์์ ๊ฐ์ฅ ํฐ ์ก์๋ก ๋๋ ๋๋จธ์ง๋ฅผ ์ ์ฅํ๋ค.
removeLast๋ฅผ ์ด์ฉํ์ฌ ๋ฐ๋ณต๋ง๋ค ๋ฐฐ์ด์ ํ์ํ ํ์ ์์ด ๋ง์ง๋ง ์์๋ก ๊ณ์ฐํ๋ฉด ๋๋๋กํ์ฌ ํจ์จ์ฑ์ ๋์๋ค.
๐ก ํผ๋๋ฐฑ
- ์ด๋ ค์ด ๋ฌธ์ ๋ ์๋๋ผ ๊ธ๋ฐฉ ํ ์ ์์๋ค.
- ์ต์ ์ ํ์ ๋ฐฉ๋ฒ์ ๊ธ๋ฐฉ ์ฐพ์ ์ค ์๋ ๊ฒ์ด ์ค์ํ๋ฏํ๋ค.
๋ฌธ์
'3๏ธโฃ Swift > Problem Solving' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift Algorithm] ๋กํ BOJ #2217 (0) | 2021.08.18 |
---|---|
[Swift Algorithm] ํ์์ค ๋ฐฐ์ BOJ #1931 (0) | 2021.08.18 |
[Swift Algorithm] ์นด๋2 BOJ #2164 (0) | 2021.08.13 |
[Swift Algorithm] ์คํฐ์ BOJ #17298 (0) | 2021.08.08 |
[Swift Algorithm] ๊ท ํ์กํ ์ธ์ BOJ #4949 (0) | 2021.08.07 |
๋๊ธ