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

[Swift] 2019 KAKAO BLIND RECRUITMENT ๋ฌด์ง€์˜ ๋จน๋ฐฉ ๋ผ์ด๋ธŒ

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

Problem

 

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ๋ฌด์ง€์˜ ๋จน๋ฐฉ ๋ผ์ด๋ธŒ

 

programmers.co.kr


Solution

 

ํ•ด๋‹น ๋ฌธ์ œ๋Š” ํšจ์œจ์„ฑ์ด ํ•ต์‹ฌ์ธ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

 

food_times๊ฐ€ ์ตœ๋Œ€ 1์–ต, k๊ฐ€ ์ตœ๋Œ€ 2*10^13์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ์ˆœํžˆ 0์ดˆ๋ถ€ํ„ฐ ์‹œ๊ฐ„์„ ์žฌ๋ฉฐ ์Œ์‹์„ ํ™•์ธํ•˜๊ธฐ์—” ๋„ˆ๋ฌด ํฐ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค.

 

 

1. ์Œ์‹์ด ๋‚จ์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋ฅผ ์ •์˜ํ•œ๋‹ค.

 

์Œ์‹์„ ๋จน๋Š” ์‹œ๊ฐ„์„ ๋ชจ๋‘ ํ•ฉ์ณ๋„ k๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด k์‹œ๊ฐ„์— ๋‚จ๋Š” ์Œ์‹์ด ์—†์Šต๋‹ˆ๋‹ค.

 

if food_times.reduce(0,+) <= k { return -1 }

 

2. food_times๋ฅผ ์ธ๋ฑ์Šค์™€ ์‹œ๊ฐ„์œผ๋กœ ๋‚˜๋ˆ  ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค.

 

์ •๋ ฌ์„ ํ•˜๊ฒŒ ๋˜๋ฉด ํ•ด๋‹น ์‹œ๊ฐ„์ด ๋‹ด๊ธด ์Œ์‹์ด ๋ช‡ ๋ฒˆ์งธ์ธ์ง€ ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— Enum์œผ๋กœ ๋งŒ๋“ค์–ด index์™€ element๋ฅผ ๋‚˜๋ˆ ์„œ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

 

var foods = food_times.enumerated().sorted{$0.element > $1.element}

 

3. ๋‚จ์€ ์Œ์‹ ์ˆ˜์™€ ์ตœ์†Œ ์‹œ๊ฐ„์„ ๊ณฑํ•˜์—ฌ k์—์„œ ๋นผ์ค€๋‹ค.

 

ํ•œ๋ฒˆ์— ์Œ์‹ ์ˆ˜๋ฅผ ๊ฐ€์žฅ ๋งŽ์ด ๋บ„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ํ˜„์žฌ ๋‚จ์€ ์Œ์‹ ์ˆ˜์™€ ๊ฐ€์žฅ ์ตœ์†Œ๊ฐ’์„ ๊ณฑํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

์ฆ‰, [3,5,6,7,8,9,4,4,3,3]๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด ํ˜„์žฌ ๋‚จ์€ ์Œ์‹ ์ˆ˜(10๊ฐœ) * ์ตœ์†Œ๊ฐ’(3)์„ K์—์„œ ๋นผ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๊ทธ ๋‹ค์Œ์€ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ์‚ญ์ œ๋œ ์ตœ์†Œ๊ฐ’์„ ์ €์žฅํ•ด์ฃผ๊ณ  K๊ฐ€ 0๋ณด๋‹ค ์ ์„ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•ด์ค๋‹ˆ๋‹ค.

 

var last:Int = 0
    while K - foods.count * (foods.last!.element - last) >= 0{
        let min = foods.removeLast().element
        K -= (foods.count+1) * (min-last)
        last = min
    }

 

4. ์ธ๋ฑ์Šค ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜์—ฌ K๋ฅผ ๋‚จ์€ ์Œ์‹ ์ˆ˜ ๋งŒํผ ๋‚˜๋ˆˆ ๊ฒƒ์˜ ๋‚˜๋จธ์ง€๋ฒˆ ์งธ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

 

 return foods.sorted{$0.offset < $1.offset}[K%foods.count].offset + 1

Source Code

 


P.S

 

์ฒ˜์Œ์œผ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค 4๋‹จ๊ณ„๋ฅผ ํ’€์—ˆ๋Š”๋ฐ ๊ฐ€์žฅ ๋งŽ์€ ์‚ฌ๋žŒ์ด ํ‘ผ ๋ฌธ์ œ๋ฅผ ํ’€์–ด์„œ ๊ทธ๋Ÿฐ์ง€ 3๋‹จ๊ณ„์™€ ํฌ๊ฒŒ ๋‹ค๋ฅด์ง€ ์•Š๋‹ค๊ณ  ๋Š๊ผˆ๋‹ค.

 

๊ทผ๋ฐ ์œ„ ๋ฌธ์ œ์—์„œ ์กฐ๊ธˆ ์ด์ƒํ•œ๊ฒŒ ์Œ์‹์„ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•˜๊ณ  ์ฒซ ๋ฒˆ์งธ ์›์†Œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฐ˜๋ณตํ•˜๋ฉด ํšจ์œจ์„ฑ์—์„œ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋‚˜์˜ค๊ณ 

 

๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•˜์—ฌ ๋งˆ์ง€๋ง‰ ๋ฒˆ์งธ ์›์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ†ต๊ณผ๊ฐ€ ๋œ๋‹ค... ์™œ ์ด๋Ÿฌ๋Š”๊ฑฐ์ง€..

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€