Skip to content

[Algorithm] FrogRiverOneย #134

@hwangJi-dev

Description

@hwangJi-dev

๐Ÿ’ฌย ๋ฌธ์ œ

https://app.codility.com/programmers/lessons/4-counting_elements/frog_river_one/


๐Ÿ’ฌย Idea

  1. ์ฒ˜์Œ์—๋Š” X ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง„ ๋ฐฐ์—ด์„ false๋กœ ๋ชจ๋‘ ์ดˆ๊ธฐํ™”ํ•˜์—ฌ ์ƒ์„ฑํ•œ ๋’ค, ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฉฐ ํ•ด๋‹น ์ธ๋ฑ์Šค์˜ ๊ฐ’์„ true๋กœ ๋ฐ”๊พผ ํ›„ ์กฐ๊ฑด๋ฌธ์„ ํ†ตํ•ด ํ•ด๋‹น ๋ฐฐ์—ด์ด ๋ชจ๋‘ true์ธ์ง€ ๊ฒ€์‚ฌํ•ด์ฃผ๋Š” ์ž‘์—…์„ ๊ฑฐ์ณค์—ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋ ‡๊ฒŒ ํ•˜๋‹ˆ ๋ฐ˜๋ณต๋ฌธ ์•ˆ์— O(N)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€๋Š” ์ž‘์—…์ด ๋“ค์–ด์žˆ์–ด ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.
  2. ๋”ฐ๋ผ์„œ ํ’€์ด ์ ‘๊ทผ๋ฒ•์„ ์กฐ๊ธˆ ๋ณ€๊ฒฝํ•˜์—ฌ Set ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค. ๋ฌธ์ œ์˜ ์กฐ๊ฑด์—์„œ ๋ฐฐ์—ด์˜ ์›์†Œ์˜ ๊ฐ’์€ ๋ฌด์กฐ๊ฑด X + 1 ์ด๋‚ด์˜ ์ˆ˜๋ผ ํ–ˆ์œผ๋ฏ€๋กœ Set์— ์ฐจ๋ก€๋กœ ์›์†Œ๋ฅผ ์ง‘์–ด๋„ฃ์€ ํ›„ ํ•ด๋‹น ๋ฐฐ์—ด์˜ count๊ฐ€ X์™€ ๋™์ผํ•ด์งˆ ๋•Œ๋ฅผ ๊ฒ€์‚ฌํ•˜์—ฌ ํ•ด๋‹น ์‹œ๊ฐ„์„ ๋ฆฌํ„ดํ•ด์ฃผ์—ˆ๋‹ค.
    1. count ๋น„๊ต๋Š” O(1)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€๋ฏ€๋กœ ํ›จ์”ฌ ํšจ์œจ์ ์ด๋‹ค.

๐Ÿ’ฌย ํ’€์ด

public func solution(X : Int, A : inout [Int]) -> Int {
    var leafArr: Set<Int> = []
    
    for (idx, i) in A.enumerated() {
        leafArr.insert(i)
        if leafArr.count == X { return idx }
    }
    
    return -1
}

์†Œ์š”์‹œ๊ฐ„ : 15๋ถ„

์‹œ๊ฐ„ ๋ณต์žก๋„ : O(N)

ํ‰๊ฐ€ํ‘œ : https://app.codility.com/demo/results/trainingXMSU6T-TQB/

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions