๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“– Problem Solution

[Swift] 2020 KAKAO BLIND RECRUITMENT ์™ธ๋ฒฝ ์ ๊ฒ€

by Fomagran ๐Ÿ’ป 2021. 9. 8.
728x90
๋ฐ˜์‘ํ˜•

 

Problem

 

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์™ธ๋ฒฝ ์ ๊ฒ€

๋ ˆ์Šคํ† ๋ž‘์„ ์šด์˜ํ•˜๊ณ  ์žˆ๋Š” "์Šค์นดํ”ผ"๋Š” ๋ ˆ์Šคํ† ๋ž‘ ๋‚ด๋ถ€๊ฐ€ ๋„ˆ๋ฌด ๋‚ก์•„ ์นœ๊ตฌ๋“ค๊ณผ ํ•จ๊ป˜ ์ง์ ‘ ๋ฆฌ๋ชจ๋ธ๋ง ํ•˜๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ ˆ์Šคํ† ๋ž‘์ด ์žˆ๋Š” ๊ณณ์€ ์Šค๋…ธ์šฐํƒ€์šด์œผ๋กœ ๋งค์šฐ ์ถ”์šด ์ง€์—ญ์ด์–ด์„œ ๋‚ด๋ถ€ ๊ณต์‚ฌ๋ฅผ ํ•˜

programmers.co.kr


Solution

 

1. Set๋กœ ๋œ ์ทจ์•ฝ์ ๋“ค์ด ๋‹ด์„ weaks ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค.

 

Set๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š” ์ด์œ ๋Š” ์ทจ์•ฝ์ ๋“ค์ด ๊ฐ™์€ ๊ฒƒ๋“ค์˜ ๋ฐ˜๋ณต์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด์„œ์ž…๋‹ˆ๋‹ค.(์‹œ๊ฐ„์ดˆ๊ณผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด)

 

var weaks:Set<[Int]> = [weak]

 

2. ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฑฐ๋ฆฌ๊ฐ€ ํฐ ์นœ๊ตฌ๋ถ€ํ„ฐ ์ฐจ๋ก€๋กœ ์ˆœํšŒํ•œ๋‹ค.

 

์ตœ๋Œ€ํ•œ ์ ์€ ์นœ๊ตฌ๋ฅผ ์ด์šฉํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๊ฑฐ๋ฆฌ๊ฐ€ ํฐ ์นœ๊ตฌ๋ถ€ํ„ฐ ์ˆœํšŒํ•ฉ๋‹ˆ๋‹ค.

 

 for (i,d) in dist.reversed().enumerated() { ...

 

3. ์ด๋ฏธ ์ ๊ฒ€ํ•œ ์ทจ์•ฝ์ ๋“ค์„ ํ•„ํ„ฐ๋งํ•œ ์ทจ์•ฝ์ ๋“ค์„ ์ƒˆ๋กœ์šด ์ทจ์•ฝ์ ๋“ค์— ๋‹ด์•„์ค๋‹ˆ๋‹ค.

 

weaks์˜ ์ทจ์•ฝ์ ๋“ค์ด ๋‹ด๊ธด ๋ฐฐ์—ด์—์„œ ์ทจ์•ฝ์ ๋“ค์„ ์ˆœํšŒํ•ด์ค๋‹ˆ๋‹ค.

 

๊ทธ๋ฆฌ๊ณค ์ ๊ฒ€๋˜์ง€ ์•Š์€ ์ทจ์•ฝ์ ๋“ค์„ ํ•„ํ„ฐ๋งํ•ด์ค๋‹ˆ๋‹ค.

 

๋งŒ์•ฝ ํ•„ํ„ฐ๋งํ•œ ์ทจ์•ฝ์ ์ด ํ•˜๋‚˜๋„ ๋‚จ์ง€ ์•Š์•˜๋‹ค๋ฉด ๋ชจ๋‘ ์ ๊ฒ€๋œ ๊ฒƒ์ด๋ฏ€๋กœ ์นœ๊ตฌ ์ˆซ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•ด์ค๋‹ˆ๋‹ค.

 

์•„๋‹ˆ๋ผ๋ฉด ์ƒˆ๋กœ์šด ์ทจ์•ฝ์ ๋“ค์„ ๋‹ด๋Š” ๊ณณ์— ํ•„ํ„ฐ๋งํ•œ ์ทจ์•ฝ์ ๋“ค์„ ๋„ฃ์–ด์ค๋‹ˆ๋‹ค.

 

weaks์˜ ์ทจ์•ฝ์ ๋“ค์˜ ์ˆœํšŒ๊ฐ€ ๋๋‚ฌ๋‹ค๋ฉด weaks๋ฅผ ์ƒˆ๋กœ์šด newWeaks๋กœ ๋Œ€์ฒดํ•ด์ค๋‹ˆ๋‹ค.

 

func solution(_ n:Int, _ weak:[Int], _ dist:[Int]) -> Int {
    var weaks:Set<[Int]> = [weak]
    for (friendCount,d) in dist.reversed().enumerated() {
        var newWeaks:Set<[Int]> = []
        for w in weaks {
            for start in w {
                let end = (n+(start-d))%n
                let filterWeaks = start > end ? w.filter{$0 < end || start+1...n ~= $0 } : w.filter{ start+1..<end ~= $0 }
                if filterWeaks.isEmpty { return friendCount+1 }
                newWeaks.insert(filterWeaks)
            }
        }
        weaks = newWeaks
    }
    return -1
}

Source Code

 


P.S

๋‚˜ํ•œํ…Œ๋Š” ์ •๋ง ์–ด๋ ค์› ๋˜ ๋ฌธ์ œ์˜€๋‹ค...

 

์ฒ˜์Œ์—” ์‹œ๊ณ„ ๋ฐ˜๋Œ€๋ฐฉํ–ฅ๊ณผ ์‹œ๊ณ„๋ฐฉํ–ฅ์œผ๋กœ DFS ๋ฐฉ์‹์œผ๋กœ ํ–ˆ๋Š”๋ฐ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋‚ฌ๋‹ค.

 

์•„๋ฌด๋ฆฌ ์ƒ๊ฐํ•ด๋„ ๋ชจ๋ฅด๊ฒ ์–ด์„œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ ํ’€์ด๋ฅผ ๋ดค๋Š”๋ฐ Set๋กœ ์ทจ์•ฝ์ ๋“ค์„ ๋‹ด์•„์ค˜์„œ ๋ฐ˜๋ณต๋˜์ง€ ์•Š๊ฒŒ ํ•˜๋Š”๊ฒŒ ํ•ต์‹ฌ์ด์—ˆ๋‹ค...

 

๊ทธ๋ฆฌ๊ณ  ์•„์ง๊นŒ์ง€ ์ดํ•ด๋Š” ์•ˆ๋˜๋Š”๋ฐ ์™œ ๋ฐ˜์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ ํ†ต์ผํ•ด๋„ ๋‹ต์ด ๊ฐ™์€๊ฑธ๊นŒ..? ๋„ˆ๋ฌด ์ฐ์ฐํ•˜๋‹ค...


์ฐธ๊ณ ํ•œ ๋ธ”๋กœ๊ทธ

 

 

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] 2020 KAKAO BLIND RECRUITMENT Coding Test ์™ธ๋ฒฝ ์ ๊ฒ€ Solution in Swift

๋ฌธ์ œ ์ถœ์ฒ˜ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”. programmers.co

rosemelon.hwachae.com

 

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€