Skip to content

[Algorithm] FloodDepthย #155

@hwangJi-dev

Description

@hwangJi-dev

๐Ÿ’ฌย ๋ฌธ์ œ

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/

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions