๋ฌธ์ ์ค๋ช
ํ์ค์ด๋ ์์ฆ ์ฃผ์์ ๋น ์ ธ์๋ค. ๊ทธ๋ ๋ฏธ๋๋ฅผ ๋ด๋ค๋ณด๋ ๋์ด ๋ฐ์ด๋, ๋ ๋ณ๋ก ์ฃผ๊ฐ๋ฅผ ์์ํ๊ณ ์ธ์ ๋ ๊ทธ๊ฒ ๋ง์๋จ์ด์ง๋ค. ๋งค์ผ ๊ทธ๋ ์๋ ์ธ ๊ฐ์ง ์ค ํ ํ๋์ ํ๋ค.
- ์ฃผ์ ํ๋๋ฅผ ์ฐ๋ค.
- ์ํ๋ ๋งํผ ๊ฐ์ง๊ณ ์๋ ์ฃผ์์ ํ๋ค.
- ์๋ฌด๊ฒ๋ ์ํ๋ค.
ํ์ค์ด๋ ๋ฏธ๋๋ฅผ ์์ํ๋ ๋ฐ์ด๋ ์๋ชฉ์ ๊ฐ์ก์ง๋ง, ์ด๋ป๊ฒ ํด์ผ ์์ ์ด ์ต๋ ์ด์ต์ ์ป์ ์ ์๋์ง ๋ชจ๋ฅธ๋ค. ๋ฐ๋ผ์ ๋น์ ์๊ฒ ๋ ๋ณ๋ก ์ฃผ์์ ๊ฐ๊ฒฉ์ ์๋ ค์ฃผ์์ ๋, ์ต๋ ์ด์ต์ด ์ผ๋ง๋ ๋๋์ง ๊ณ์ฐ์ ํด๋ฌ๋ผ๊ณ ๋ถํํ๋ค.
์๋ฅผ ๋ค์ด ๋ ์๊ฐ 3์ผ์ด๊ณ ๋ ๋ณ๋ก ์ฃผ๊ฐ๊ฐ 10, 7, 6์ผ ๋, ์ฃผ๊ฐ๊ฐ ๊ณ์ ๊ฐ์ํ๋ฏ๋ก ์ต๋ ์ด์ต์ 0์ด ๋๋ค. ๊ทธ๋ฌ๋ ๋ง์ฝ ๋ ๋ณ๋ก ์ฃผ๊ฐ๊ฐ 3, 5, 9์ผ ๋๋ ์ฒ์ ๋ ๋ ์ ์ฃผ์์ ํ๋์ฉ ์ฌ๊ณ , ๋ง์ง๋ง๋ ๋ค ํ์ ๋ฒ๋ฆฌ๋ฉด ์ด์ต์ด 10์ด ๋๋ค.
์ ๋ ฅ
์ ๋ ฅ์ ์ฒซ ์ค์๋ ํ ์คํธ์ผ์ด์ค ์๋ฅผ ๋ํ๋ด๋ ์์ฐ์ T๊ฐ ์ฃผ์ด์ง๋ค. ๊ฐ ํ ์คํธ์ผ์ด์ค ๋ณ๋ก ์ฒซ ์ค์๋ ๋ ์ ์๋ฅผ ๋ํ๋ด๋ ์์ฐ์ N(2 ≤ N ≤ 1,000,000)์ด ์ฃผ์ด์ง๊ณ , ๋์งธ ์ค์๋ ๋ ๋ณ ์ฃผ๊ฐ๋ฅผ ๋ํ๋ด๋ N๊ฐ์ ์์ฐ์๋ค์ด ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋์ด ์์๋๋ก ์ฃผ์ด์ง๋ค. ๋ ๋ณ ์ฃผ๊ฐ๋ 10,000์ดํ๋ค.
์ถ๋ ฅ
๊ฐ ํ ์คํธ์ผ์ด์ค ๋ณ๋ก ์ต๋ ์ด์ต์ ๋ํ๋ด๋ ์ ์ ํ๋๋ฅผ ์ถ๋ ฅํ๋ค. ๋ต์ ๋ถํธ์๋ 64bit ์ ์ํ์ผ๋ก ํํ ๊ฐ๋ฅํ๋ค.
์ ์ถ๋ ฅ ์์
์ ๋ ฅ
3
3
10 7 6
3
3 5 9
5
1 1 3 1 2
์ถ๋ ฅ
0
10
5
๋ด ๋ฌธ์ ํ์ด
import Foundation
var testCase = Int(readLine()!)!
for _ in 0..<testCase {
let day = Int(readLine()!)!
let stocks = readLine()!.split(separator: " ").map({Int(String($0))!})
var answer = 0
var max = 0
for i in (0..<day).reversed() {
if max < stocks[i] { max = stocks[i] }
else { answer += max - stocks[i] }
}
print(answer)
}
๐ ๋ ๋ณ๋ก ํ์ฌ ์ฃผ๊ฐ๋ณด๋ค ์ถํ์ ์ฃผ๊ฐ๊ฐ ๋ ์์นํ๋ ๋ ์ด ์๋์ง ํ์ธํด์ฃผ๋ ๊ฒ์ด ํฌ์ธํธ!
๋ฐ๋ผ์ ๋๋ ๋ง์ง๋ง๋ ๋ถํฐ ๋ฐ๋๋ก ๋ฐ๋ณตํด์ฃผ๋ฉด์ ํ์ฌ ์ฃผ๊ฐ๋ณด๋ค,
์ง๊ธ๊น์ง ๊ฒ์ฌํ ๋ ๋ค์ ์ฃผ๊ฐ ์ค ๋ ๋์ ๋ ์ด ์กด์ฌํ๋์ง ์ฒดํฌํด์ฃผ์๋ค.
(๋ฌธ์ ์์ ์ฃผ์ด์ง ์ ๋ ฅ ์์ ์ค, 1 1 3 1 2 ์์ผ๋ก ๋ฐฐ์น๋ ์ฃผ๊ฐ ๋ฐฐ์ด์ ๋ํ๋ก ๋ณด๋ฉด
๋ง์ง๋ง๋ ์ธ 2๋ถํฐ ๊ฒ์ฌํ๋๋ฐ, max๊ฐ 0์ผ๋ก ์ด๊ธฐํ๋ ์ํ๊ธฐ ๋๋ฌธ์ max๋ฅผ 2๋ก ์ ๋ฐ์ดํธํ๋ค.
๊ทธ๋ฆฌ๊ณ ๋ค์์ผ๋ก ๋์ด๊ฐ๋ฉด ์ฃผ๊ฐ๊ฐ 1์ธ๋ฐ, max๋ณด๋ค ์์ ๊ฐ์์ ์ ์ ์๋ค.
์ด ๋ max๋ณด๋ค ํ์ฌ ์ฃผ๊ฐ๊ฐ ์๋ค๋ ์๊ธฐ๋ '์ค๋'์ดํ์ ์ฃผ๊ฐ๊ฐ ๋ ์ค๋ฅด๋ ๋ ์ด ์กด์ฌํ๋ค๋ ์๋ฏธ์ด๊ณ ,
'์ค๋' ์ดํ์ ๋ ๋ค ์ค ๊ฐ์ฅ ์ฃผ๊ฐ๊ฐ ๋์ ๋์ ์ฃผ๊ฐ๊ฐ ๋ฐ๋ก max๋ผ๋ ๋ป์ด๋ค.
๋ฐ๋ผ์ ์ด ๋ ์ฃผ์์ ํ๋ ์ฌ๊ณ max์ผ ๋ ํ๋ฉด ์์ต์ ๋ณผ ์ ์๋ค๋ ๋ป์ด๋ฏ๋ก
(max - ํ์ฌ๊ฐ)๋ฅผ ์ ์ฒด ์์ต์ธ answer์ ๋ํด์ค๋ค.)
- ์์ต์ ๋์ ํ answer ๋ณ์์ ํ์ํ ์ฃผ๊ฐ ์ค ๊ฐ์ฅ ๋์ ์ฃผ๊ฐ๋ฅผ ์ ์ฅํ max ๋ณ์๋ฅผ ์ ์ธํ๋ค.
- ์ ๋ ฅ๋ฐ์ ์ฃผ๊ฐ ๋ฐฐ์ด์ ๋ค์์๋ถํฐ ๋ฐ๋ณตํด์ฃผ์๋ค.
- max๋ณด๋ค ํ์ฌ๊ฐ๊ฐ ๋์ ๊ฒฝ์ฐ max๋ฅผ ์
๋ฐ์ดํธํ๊ณ ,
max๋ณด๋ค ํ์ฌ๊ฐ๊ฐ ๋ฎ์ ๊ฒฝ์ฐ max์์ ํ์ฌ๊ฐ๋ฅผ ๋บ ๊ฐ์ answer์ ๋ํ๋ค.
๐ก ํผ๋๋ฐฑ
- ์์์๋ถํฐ ๊ฒ์ฌํด์ฃผ๋ฉด ๊ณ์ max๋ฅผ ๊ฒ์ํด์ค์ผํ๋ฏ๋ก ์๊ฐ๋ณต์ก๋๊ฐ ๋์์ง๋๋ฐ,
๋ค์์๋ถํฐ ๊ฒ์ฌํ๋ฉด ๋๋ค๋ ์ ๋ง ์บ์นํ๋ฉด ์ฝ๊ฒ ํ ์ ์๋ ๋ฌธ์ ๊ฐ๋ค.
๋ฌธ์
'3๏ธโฃ Swift > Problem Solving' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift Algorithm] ๋ฏธ๋ก ํ์ BOJ #2178 (0) | 2021.10.01 |
---|---|
[Swift Algorithm] ๊ทธ๋ฆผ BOJ #1926 (0) | 2021.09.30 |
[Swift Algorithm] ๊ณต์ฃผ๋์ ์ ์ BOJ #2457 (0) | 2021.09.01 |
[Swift Algorithm] ์ค ์ธ์ฐ๊ธฐ BOJ #7570 (1) | 2021.08.29 |
[Swift Algorithm] ์์๋ฃ๊ธฐ BOJ #1965 (0) | 2021.08.28 |
๋๊ธ