-
Notifications
You must be signed in to change notification settings - Fork 0
Closed
Description
๐ฌย ๋ฌธ์
https://app.codility.com/programmers/trainings/1/flood_depth/
๐ฌย Idea
-
๋ฌธ์ ํด์ ํ ๋ฌธ์ ํ์ด ์ค๊ณ๋ฅผ ์ ๋ง ๊ผผ๊ผผํ ํด์ผ๊ฒ ๋ค๊ณ ๋๊ผ๋คโฆ
-
๋ง์ด ์ด๋ ค์ด ๋ฌธ์ ๊ฐ ์๋์๋๋ฐ, ์ค๊ณ๋ฅผ ์ ๋๋ก ํ์ง ์๊ณ ๋ฌด์์ ์ฝ๋๋ฅผ ์ง๊ธฐ ์์ํ๋๋ ๋๋ ์ฆ์ด ๊ฑธ๋ฆฐ ๊ฒ ๋ง๋ฅ ๋ฌธ์ ์์์ ํค๋ฉ๊ฒ ๋์๋ค.
-
๋ฌผ ์ ๋ฉ์ด๋ maxWall์ด ๋ ํฐ ์๋ก ๊ฐฑ์ ๋ ๋๋ง๋ค ์๋ก์ด ์ ๋ฉ์ด๊ฐ ์๊ธฐ๋ฏ๋ก ํฐ ์ ๋ฉ์ด๊ฐ ๊ฐฑ์ ๋ ๋ ๊ฐ์ฅ ์์ depth๋ฅผ 100000000๋ก ์ด๊ธฐํํด์ฃผ์๋ค.
- ์ดํ ์์ ๊ฐ์ด ๋์ฌ ๋๋ง๋ค minLast๋ฅผ ํ ์ ๋ฉ์ด ๋ด์ ๊ฐ์ฅ ์์ ๊ฐ์ผ๋ก ๊ฐฑ์ ํด์ฃผ์๋ค.
- ๊ทธ๋ฆฌ๊ณ ํฐ ์ ๋ฉ์ด ๋ด์์ ์์ ์ ๋ฉ์ด๊ฐ ์๊ธธ ๋๋ง๋ค maxDepth์ ๊ฐ๊ณผ ๋น๊ตํ์ฌ ํฐ ๊ฐ์ ์ ์ฅํ๋๋ก ํ๋ค.
๐ฌย ํ์ด
public func solution(_ A : inout [Int]) -> Int {
var maxWall = A[0]
var last = A[0]
var wall = A[0]
var minLast = 100000000
var maxDepth = 0
for i in 1..<A.count {
if A[i] < last {
minLast = min(minLast, A[i])
} else {
// ํฐ ์
๋ฉ์ด ๊ฐฑ์
if A[i] >= maxWall {
maxDepth = max(maxWall - minLast, maxDepth)
maxWall = A[i]
minLast = 100000000
} else {
// ์์ ์
๋ฉ์ด
wall = A[i]
maxDepth = max(wall - minLast, maxDepth)
}
}
last = A[i]
}
return maxDepth
}
์์์๊ฐ
: 2์๊ฐ
์๊ฐ ๋ณต์ก๋
: O(N)
ํ๊ฐํ
: https://app.codility.com/demo/results/trainingU3M2EJ-UE5/