๊ธ€ ์ž‘์„ฑ์ž: ๊ฐœ๋ฐœํ•˜๋Š” ํ›ˆ์ด

๋ฌธ์ œ

https://programmers.co.kr/learn/courses/30/lessons/42627

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ๋””์Šคํฌ ์ปจํŠธ๋กค๋Ÿฌ

ํ•˜๋“œ๋””์Šคํฌ๋Š” ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ์ž‘์—…๋งŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋””์Šคํฌ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์€ ์š”์ฒญ์ด ๋“ค์–ด์˜จ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ

programmers.co.kr

๋ฌธ์ œ ์„ค๋ช…

ํ•˜๋“œ๋””์Šคํฌ๋Š” ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ์ž‘์—…๋งŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋””์Šคํฌ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์€ ์š”์ฒญ์ด ๋“ค์–ด์˜จ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ๋“ค์–ด

- 0ms ์‹œ์ ์— 3ms๊ฐ€ ์†Œ์š”๋˜๋Š” A์ž‘์—… ์š”์ฒญ - 1ms ์‹œ์ ์— 9ms๊ฐ€ ์†Œ์š”๋˜๋Š” B์ž‘์—… ์š”์ฒญ - 2ms ์‹œ์ ์— 6ms๊ฐ€ ์†Œ์š”๋˜๋Š” C์ž‘์—… ์š”์ฒญ

์™€ ๊ฐ™์€ ์š”์ฒญ์ด ๋“ค์–ด์™”์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ๊ทธ๋ฆผ์œผ๋กœ ํ‘œํ˜„ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ์š”์ฒญ๋งŒ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ๊ฐ์˜ ์ž‘์—…์„ ์š”์ฒญ๋ฐ›์€ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฒ˜๋ฆฌ ๋ฉ๋‹ˆ๋‹ค.

- A: 3ms ์‹œ์ ์— ์ž‘์—… ์™„๋ฃŒ (์š”์ฒญ์—์„œ ์ข…๋ฃŒ๊นŒ์ง€ : 3ms) - B: 1ms๋ถ€ํ„ฐ ๋Œ€๊ธฐํ•˜๋‹ค๊ฐ€, 3ms ์‹œ์ ์— ์ž‘์—…์„ ์‹œ์ž‘ํ•ด์„œ 12ms ์‹œ์ ์— ์ž‘์—… ์™„๋ฃŒ(์š”์ฒญ์—์„œ ์ข…๋ฃŒ๊นŒ์ง€ : 11ms) - C: 2ms๋ถ€ํ„ฐ ๋Œ€๊ธฐํ•˜๋‹ค๊ฐ€, 12ms ์‹œ์ ์— ์ž‘์—…์„ ์‹œ์ž‘ํ•ด์„œ 18ms ์‹œ์ ์— ์ž‘์—… ์™„๋ฃŒ(์š”์ฒญ์—์„œ ์ข…๋ฃŒ๊นŒ์ง€ : 16ms)

์ด ๋•Œ ๊ฐ ์ž‘์—…์˜ ์š”์ฒญ๋ถ€ํ„ฐ ์ข…๋ฃŒ๊นŒ์ง€ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„์˜ ํ‰๊ท ์€ 10ms(= (3 + 11 + 16) / 3)๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ A → C → B ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•˜๋ฉด

- A: 3ms ์‹œ์ ์— ์ž‘์—… ์™„๋ฃŒ(์š”์ฒญ์—์„œ ์ข…๋ฃŒ๊นŒ์ง€ : 3ms) - C: 2ms๋ถ€ํ„ฐ ๋Œ€๊ธฐํ•˜๋‹ค๊ฐ€, 3ms ์‹œ์ ์— ์ž‘์—…์„ ์‹œ์ž‘ํ•ด์„œ 9ms ์‹œ์ ์— ์ž‘์—… ์™„๋ฃŒ(์š”์ฒญ์—์„œ ์ข…๋ฃŒ๊นŒ์ง€ : 7ms) - B: 1ms๋ถ€ํ„ฐ ๋Œ€๊ธฐํ•˜๋‹ค๊ฐ€, 9ms ์‹œ์ ์— ์ž‘์—…์„ ์‹œ์ž‘ํ•ด์„œ 18ms ์‹œ์ ์— ์ž‘์—… ์™„๋ฃŒ(์š”์ฒญ์—์„œ ์ข…๋ฃŒ๊นŒ์ง€ : 17ms)

์ด๋ ‡๊ฒŒ A → C → B์˜ ์ˆœ์„œ๋กœ ์ฒ˜๋ฆฌํ•˜๋ฉด ๊ฐ ์ž‘์—…์˜ ์š”์ฒญ๋ถ€ํ„ฐ ์ข…๋ฃŒ๊นŒ์ง€ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„์˜ ํ‰๊ท ์€ 9ms(= (3 + 7 + 17) / 3)๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

๊ฐ ์ž‘์—…์— ๋Œ€ํ•ด [์ž‘์—…์ด ์š”์ฒญ๋˜๋Š” ์‹œ์ , ์ž‘์—…์˜ ์†Œ์š”์‹œ๊ฐ„]์„ ๋‹ด์€ 2์ฐจ์› ๋ฐฐ์—ด jobs๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์ž‘์—…์˜ ์š”์ฒญ๋ถ€ํ„ฐ ์ข…๋ฃŒ๊นŒ์ง€ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„์˜ ํ‰๊ท ์„ ๊ฐ€์žฅ ์ค„์ด๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋ฉด ํ‰๊ท ์ด ์–ผ๋งˆ๊ฐ€ ๋˜๋Š”์ง€ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. (๋‹จ, ์†Œ์ˆ˜์  ์ดํ•˜์˜ ์ˆ˜๋Š” ๋ฒ„๋ฆฝ๋‹ˆ๋‹ค)

ํ’€์ด

์šด์˜์ฒด์ œ๋ฅผ ๊ณต๋ถ€ํ–ˆ๋˜ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋Š” ์‰ฝ๊ฒŒ ์ดํ•ด๊ฐ€ ๋˜์—ˆ์„ SJF(Shortest Job First) ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ทธ๋Œ€๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค. ํž™์„ ์‚ฌ์šฉํ•œ ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋” ์‰ฝ๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒ ์ง€๋งŒ, swift๋Š” ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ •๋ ฌ์„ ํ†ตํ•ด ์›ํ•˜๋Š” ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐฐ์—ด ์ œ์ผ ๋์œผ๋กœ ๋ณด๋‚ด๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. 

 

์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

1. ์ฒ˜์Œ์—๋Š” ๊ฐ€์žฅ ๋จผ์ € ๋„์ฐฉํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. 

2. ์ด๋ฒˆ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋™์•ˆ ๋„์ฐฉํ•˜๋Š” ์ž‘์—…๋“ค์„ ๋ณ„๋„์˜ ์ž‘์—… ํ์— ๋ชจ์€๋‹ค.

3. ์ž‘์—… ํ์— ๋„์ฐฉํ•œ ์ž‘์—…๋“ค ์ค‘ ์ˆ˜ํ–‰์‹œ๊ฐ„์ด ๊ฐ€์žฅ ์งง์€ ์ž‘์—…์„ ๊บผ๋‚ด ์ˆ˜ํ–‰ํ•œ๋‹ค. 

4. ๋ชจ๋“  ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•  ๋•Œ๊นŒ์ง€ 2, 3๋ฒˆ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

 

๊ทธ๋Ÿฐ๋ฐ ์—์ œ ์ผ€์ด์Šค์—์„œ๋Š” ์œ„ ์•Œ๊ณ ๋ฆฌ์ฆ˜๋Œ€๋กœ ์ฒ˜๋ฆฌํ–ˆ์„ ๋•Œ, ์žก์•„๋‚ด์ง€ ๋ชปํ•˜๋Š” ์ผ€์ด์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž‘์—…๋“ค์ด ์—ฐ๋‹ฌ์•„ ๋“ค์–ด์˜ค์ง€ ์•Š๊ณ  ์ค‘๊ฐ„์— ๋น„์–ด์žˆ๋Š” ์‹œ๊ฐ„์ด ์žˆ์„ ๋•Œ์ธ๋ฐ์š”, ์ €๋Š” ์ด๋ฅผ ์œ„ํ•ด์„œ ์ž‘์—… ํ์— ๋” ์ด์ƒ ์ž‘์—…์ด ์—†๊ณ , ์•„์ง ๋„์ฐฉํ•ด์•ผํ•  ์ž‘์—…๋“ค์ด ๋‚จ์•˜๋‹ค๋ฉด ๊ทธ ์ค‘ ๊ฐ€์žฅ ๋นจ๋ฆฌ ๋„์ฐฉํ•˜๋Š” ํ•˜๋‚˜์˜ ์ž‘์—…์„ ๊บผ๋‚ด ์ž‘์—… ํ๋กœ ๋„ฃ์–ด์ฃผ๋Š” ๋ฐฉ๋ฒ•์„ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ค‘๊ฐ„์— ์ž‘์—…์ด ๋Š๊ธฐ๋Š” ๊ตฌ๊ฐ„์ด ์ƒ๊ฒจ๋„ ๋ฐ”๋กœ ๋‹ค์Œ ์ž‘์—…์„ ๋ฐ›์•„์„œ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ”๋“œ