๐ฌย ๋ฌธ์
https://app.codility.com/programmers/trainings/1/flood_depth/
๐ฌย Idea
๋ฌธ์ ํด์ ํ ๋ฌธ์ ํ์ด ์ค๊ณ๋ฅผ ์ ๋ง ๊ผผ๊ผผํ ํด์ผ๊ฒ ๋ค๊ณ ๋๊ผ๋คโฆ
๋ง์ด ์ด๋ ค์ด ๋ฌธ์ ๊ฐ ์๋์๋๋ฐ, ์ค๊ณ๋ฅผ ์ ๋๋ก ํ์ง ์๊ณ ๋ฌด์์ ์ฝ๋๋ฅผ ์ง๊ธฐ ์์ํ๋๋ ๋๋
์ฆ์ด ๊ฑธ๋ฆฐ ๊ฒ ๋ง๋ฅ ๋ฌธ์ ์์์ ํค๋ฉ๊ฒ ๋์๋ค.
๋ฌผ ์
๋ฉ์ด๋ maxWall์ด ๋ ํฐ ์๋ก ๊ฐฑ์ ๋ ๋๋ง๋ค ์๋ก์ด ์
๋ฉ์ด๊ฐ ์๊ธฐ๋ฏ๋ก ํฐ ์
๋ฉ์ด๊ฐ ๊ฐฑ์ ๋ ๋ ๊ฐ์ฅ ์์ depth๋ฅผ 100000000๋ก ์ด๊ธฐํํด์ฃผ์๋ค.
- ์ดํ ์์ ๊ฐ์ด ๋์ฌ ๋๋ง๋ค minLast๋ฅผ ํ ์
๋ฉ์ด ๋ด์ ๊ฐ์ฅ ์์ ๊ฐ์ผ๋ก ๊ฐฑ์ ํด์ฃผ์๋ค.
- ๊ทธ๋ฆฌ๊ณ ํฐ ์
๋ฉ์ด ๋ด์์ ์์ ์
๋ฉ์ด๊ฐ ์๊ธธ ๋๋ง๋ค maxDepth์ ๊ฐ๊ณผ ๋น๊ตํ์ฌ ํฐ ๊ฐ์ ์ ์ฅํ๋๋ก ํ๋ค.
๐ฌย ํ์ด
publicfunc solution(_ A :inout[Int])->Int{varmaxWall=A[0]varlast=A[0]varwall=A[0]varminLast=100000000varmaxDepth=0foriin1..<A.count {ifA[i]< last {
minLast =min(minLast,A[i])}else{
// ํฐ ์
๋ฉ์ด ๊ฐฑ์
ifA[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/
๐ฌย ๋ฌธ์ https://app.codility.com/programmers/trainings/1/flood_depth/
๐ฌย Idea๋ฌธ์ ํด์ ํ ๋ฌธ์ ํ์ด ์ค๊ณ๋ฅผ ์ ๋ง ๊ผผ๊ผผํ ํด์ผ๊ฒ ๋ค๊ณ ๋๊ผ๋คโฆ
๋ง์ด ์ด๋ ค์ด ๋ฌธ์ ๊ฐ ์๋์๋๋ฐ, ์ค๊ณ๋ฅผ ์ ๋๋ก ํ์ง ์๊ณ ๋ฌด์์ ์ฝ๋๋ฅผ ์ง๊ธฐ ์์ํ๋๋ ๋๋ ์ฆ์ด ๊ฑธ๋ฆฐ ๊ฒ ๋ง๋ฅ ๋ฌธ์ ์์์ ํค๋ฉ๊ฒ ๋์๋ค.
๋ฌผ ์ ๋ฉ์ด๋ maxWall์ด ๋ ํฐ ์๋ก ๊ฐฑ์ ๋ ๋๋ง๋ค ์๋ก์ด ์ ๋ฉ์ด๊ฐ ์๊ธฐ๋ฏ๋ก ํฐ ์ ๋ฉ์ด๊ฐ ๊ฐฑ์ ๋ ๋ ๊ฐ์ฅ ์์ depth๋ฅผ 100000000๋ก ์ด๊ธฐํํด์ฃผ์๋ค.
๐ฌย ํ์ด์์์๊ฐ: 2์๊ฐ์๊ฐ ๋ณต์ก๋: O(N)ํ๊ฐํ: https://app.codility.com/demo/results/trainingU3M2EJ-UE5/