Google Hash Code 2021 : Global #211 (2%) ํ๊ธฐ
์ด ๊ธ์ ์ฌํด ํด์์ฝ๋ ๋ํ ๊ณผ์ ์ ๋ํ ํ๊ธฐ์ด๊ณ , ์ค๋น ๊ณผ์ ์ ์ ๊ธ(๋งํฌ)์ ์์ต๋๋ค.
- ๊ฒฐ๊ณผ
- ๋ฌธ์ ์ค๋ช
- ๋ฐ์ดํฐ ์ค๋ช
- ๋ํ ์ ๋ต์ ์คํจ
- Algorithm : Demand - Proportional - Scheduling
- ๊ฒฐ๊ณผ / Discussion
- ์์ผ๋ก๋ฅผ ์ํด
๊ฒฐ๊ณผ
A - An Example 2,000
B - By the Ocean 4,566,842
C - Checkmate 1,300,355
D - Daily Commute 1,574,469
E - Etoile 716,984
F - Forever Jammed 1,417,038
TOTAL SCORE 9,577,688
Global rank #211 / 9,000+ teams
Korea rank #11
๋ฌธ์ ์ค๋ช
- ๊ต์ฐจ๋ก, ๋๋ก, ์ฐจ๋ ๋ค์ด ์ฃผ์ด์ง๋๋ค.
- ๋๋ก ๋ค์ ๊ทธ๋ํ์์ ๋ฐฉํฅ ์๋ ๊ฐ์ ์ ๋๋ค. ๊ต์ฐจ๋ก ์์ ๊ต์ฐจ๋ก ๋ก ์ด์ด์ ธ ์๊ณ , ๊ธธ์ด ๊ฐ ์์ต๋๋ค.
- ๊ต์ฐจ๋ก ๋ ๊ทธ๋ํ์์ ์ ์ ์ ๋๋ค. ๊ต์ฐจ๋ก์๋ ์ ํธ๋ฑ ์ด ์๋๋ฐ, ํน์ ์์ (์ด)์๋ ์ ํํ 1๊ฐ์ incoming edge ์๋ง ์ด๋ก๋ถ์ด ์ผ์ ธ ์์ด์ผ ํฉ๋๋ค.
- Incoming edge ์ ์ด๋ก๋ถ์ด ๋ค์ด์ ์๋ค๋ฉด, ๊ทธ ๊ต์ฐจ๋ก์ ๊ทธ ๋๋ก์ ์ ์๋ ์ฐจ๋๋ค ์ค 1์ด์ 1๋์ฉ๋ง ๊ทธ ๊ต์ฐจ๋ก์์ ์ถ๋ฐํ๋ ๊ฐ์ ๋ค ์ค ํ๋๋ก ์ด๋ํ ์ ์์ต๋๋ค.
- ์ฐจ๋ ๋ค์ ๊ฐ๊ณ ์ถ์ ๊ฒฝ๋ก๊ฐ ์ฃผ์ด์ง๋๋ค. ๊ฒฝ๋ก๋ ๊ฐ์ ๋ค์ ์์๋ก ์ฃผ์ด์ง๊ณ , ์์์ ์ ์ฒซ ๊ฐ์ ์ ending intersection์ ์ ์๋ ๊ฒ์ผ๋ก ์ฃผ์ด์ง๋๋ค. ์ฐจ๋๋ค์ 1์ด์ 1์ฉ ์ด๋ํ๋๋ฐ, ๊ต์ฐจ๋ก๋ฅผ ๋ง๋๋ฉด ๋ด๊ฐ ์ง๊ธ ์ ์๋ ๋๋ก์ ์ด๋ก๋ถ์ด ์ผ์ง๋๊น์ง ๊ธฐ๋ค๋ฆฝ๋๋ค.
์๋ฅผ ๋ค์ด, ๊ต์ฐจ๋ก A์์ B๋ก, B์์ C๋ก, A์์ C๋ก, C์์ D๋ก ๋๋ก๊ฐ ์๋ค๊ณ ๊ฐ์ ํด ๋ด ์๋ค. ์ฌ๊ธฐ์ ์ฐจ๋ 1์ด A-B์์ ์ถ๋ฐ, ์ฐจ๋ 2๊ฐ A-C์์ ์ถ๋ฐํ๋ค๊ณ ์๊ฐํด ๋ด ์๋ค. ์ฐจ๋ 1์ด B ์์ ์ ์์ ๋, B๊ต์ฐจ๋ก๋ (A-B) ๋๋ก ์ธ์ ๋ค๋ฅธ incoming ๋๋ก๊ฐ ์์ผ๋ฏ๋ก ์ฌ๊ธฐ์ ์ด๋ก๋ถ์ ์ผ ์ฃผ๋ฉด ๋ฉ๋๋ค. ์ด๋ฌ๋ฉด ๊ต์ฐจ๋ก๋ฅผ ๋ฐ๋ก ์ง๋์ณ์ B-C ๋๋ก๋ก ์ฌ๋ผํ ์ ์์ต๋๋ค.
์ ์์์์ C ๊ต์ฐจ๋ก๋ B-C ๊ฐ์ ๊ณผ A-C ๊ฐ์ ๋๊ฐ์ endpoint์ ๋๋ค. ์ด๋, B-C ๊ฐ์ ์ ์ด๋ก๋ถ์ด ์ผ ์๋ค๋ฉด, ์์ ์ฐจ๊ฐ ์๋๋ผ๋ A-C ๊ฐ์ ์๋ ๋นจ๊ฐ๋ถ์ด ์ผ ์์ผ๋ฏ๋ก A-C๊ฐ์ ์ ๋์์ C๊ต์ฐจ๋ก๋ฅผ ๋ฐ๋ผ๋ณด๋ ์ฐจ๋์ ํตํํ ์ ์์ต๋๋ค.
๋ํ, ์ฐจ๋ค์ ๊ฒน์น์ง ์๋๋ค๋ ์ ๋ (1์ด์ ์ฐจ๋์ 1๋์ฉ๋ง ํตํํฉ๋๋ค) ์ค์ํฉ๋๋ค.
-
์ ํธ๋ฑ ์ ๊ต์ฐจ๋ก๋ง๋ค ์ค์น๋์ด ์๋๋ฐ, incoming edge๋ค์ ๋๋ ์ฌ์ดํด ํํ๋ก ์ ํธ๋ฑ ์ค์ผ์ฅด๋ง์ด ๊ฐ๋ฅํฉ๋๋ค.
-
์ ํธ๋ฑ ์ค์ผ์ฅด๋ง ์ด๋, ์ ์์๋ฅผ ๋ค์ ๋น๋ฆฌ์๋ฉด C๊ต์ฐจ๋ก์์ ๋ค์๊ณผ ๊ฐ์ด ์ค์ผ์ฅด๋งํฉ๋๋ค.
{B-C, 2} {A-C, 1}
- ์ด ํํ์ ํด์์
B-C
๊ฐ์ ์ 2์ด๊ฐ ์ด๋ก๋ถ์ ์ผ์ฃผ๊ณ ,A-C
๊ฐ์ ์ผ๋ก 1์ด๊ฐ ๋ฐ๊ฟจ๋ค๊ฐ, ๋ค์B-C
๊ฐ์ ์ 2์ด๊ฐ ์ผ์ฃผ๋ ์์ผ๋ก ๋ฐ๋ณตํ๋ค๋ ๋ป์ ๋๋ค. - ์ฆ, ์ฌ์ดํด๋ก๋ง ๋๋ฆด ์ ์๊ณ , ์ธ๋ถ์ ์ผ๋ก ์ ํธ๋ฑ์ ์กฐ์ํ ์๋ ์์ต๋๋ค. ๋์ถฉ ์๊ฐํด ๋ณด๋ฉด, ๊ต์ฐจ๋ก์ ๊ฐ ๋๋ก๋ค์ ์ํด ์ ํธ๋ฅผ ์ผ์ฃผ๋ ์์์ ๊ทธ ๋น์ค์ ์กฐ์ ํ ์ ์๋ ๊ฒ์ ๋๋ค.
Hashcode ๋ฌธ์ ๋ ์ฌ๊ธฐ์ ์ ํธ๋ฑ ์ค์ผ์ฅด๋ง ์ฌ์ดํด ์ ๋ง๋๋ ๋ฌธ์ ์ ๋๋ค. ๋ค๋ฅธ ๋ชจ๋ ๊ฒ์ ์ฃผ์ด์ง๋๋ค.
์ ์๋, ์ ํ ์๊ฐ ๋ด์ ๋์ฐฉํ ์ฐจ์ ๊ฐ์ ์ ๋ฐ๋ผ ์ ์๋ฅผ ๋ฐ์ผ๋ฉฐ, ๋นจ๋ฆฌ ๋์ฐฉํ ์๋ก ๋ณด๋์ค ์ ์๊ฐ ์์ต๋๋ค. ํ์์์ ๋ ์ฐจ๋์ 0์ ์ ๋๋ค.
๋ฐ์ดํฐ ์ค๋ช
๋ฐ์ดํฐ๋ ์ด 6๊ฐ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. A๋ ์์ ๊ณ , ๋๋จธ์ง ๋ฐ์ดํฐ๋ค์..
- B : ๊ทธ๋ฅ ํ๋ฒํ ๋ฐ์ดํฐ์ ๋๋ค. ํฐ ํน์ง์ ์์ต๋๋ค.
- C : ๊ฒฉ์ํํ๋ก ๋๋ก๊ฐ ๊ตฌ์ฑ๋ ๋ฐ์ดํฐ์ ๋๋ค.
- D : ์๊ฐ์ด ๊ต์ฅํ ๋นก๋นกํด์, ์กฐ๊ธ๋ง ์ง์ฒดํด๋ ๋ชจ๋ ์ฐจ๋ค์ด ํ์์์๋ฉ๋๋ค. ๋ช๊ฐ์ ํ๋ธ์ ์ ๋ค๊ณผ ๋ค์์ ์ ์ ๋ค์ด ํฌ๋์ก์ด์ฒ๋ผ ์ฐ๊ฒฐ๋ ํํ์ ๋๋ค.
- E : ๋ชจ๋ ์ ์ ๋ค์ด ํ๋์ ํ๋ธ์ ์ฐ๊ฒฐ๋ STAR ํํ์ ๊ทธ๋ํ์ ๋๋ค. Etoile๋ ํ๋์ค์ด๋ก ๋ณ์ด๋ผ๊ณ ํฉ๋๋ค.
- F : ๊ต์ฐจ๋ก๊ฐ ๋งค์ฐ ๋ง๊ณ , ์ฐจ๋๋ค์ด ๊ต์ฐจ๋ก์ Stuckํ๋ ๋ฐ์ดํฐ์ ๋๋ค.
๋ํ ์ ๋ต์ ์คํจ
- ๊ตฌํ ๋ณต์ก๋๊ฐ ๋์์, ์ฒด์ปค๋ฅผ ์์ฑํ์ง ๋ชปํ์ต๋๋ค. ์ ํผ์ ๋๋ต 1์๊ฐ ์ ๋ ์๊ฐ์ ์จ ๋ณด๊ณ , ํฌ๊ธฐํ๊ธฐ๋ก ๊ฒฐ์ ํ๋๋ฐ, ๊ทธ ์ด์ ๋
- Coffeetea์ DHDroid๊ฐ ์ ์ํ ์๊ณ ๋ฆฌ์ฆ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฐจ์ ์ดํ์ Simulationํด์ผ ํฉ๋๋ค. ๋ง์ฝ ๊ทธ๋ฐ ์๊ณ ๋ฆฌ์ฆ์ ์ค์ ๋ก ์ฝ๋๋ก ์ฎ๊ธด๋ค๋ฉด, Simulation์ ํตํด ์ ์๋ฅผ ์ฐ์ฐํ๋ ๋ณ๋์ ์ฒด์ปค ์์ด๋, ์ฝ๋์ ์๋ฎฌ๋ ์ด์ ์ ๋ด์ฅํ ์ ์์ต๋๋ค.
- ๋์ด์ ์ฒด์ปค๋ฅผ ์ก๊ธฐ์๋ ์๊ฐ์ด ๋๋ฌด ์๊น์ ๊ธฐ ๋๋ฌธ์ ๋๋ค.
- ๋ง์ฐฌ๊ฐ์ง ์ด์ ๋ก, dlwocks31์ด ์๋ฎฌ๋ ์ด์ ์ฝ๋ ์์ฑ์ ์คํจํ์ต๋๋ค. ๋ํ ํ๋ฐ๋ถ์๋ ์๋ฎฌ๋ ์ด์ ๋น์ทํ๊ฒ ๋์๊ฐ๋๋ฐ, ์ ํํ ์ฑ๊ณตํ๋์ง ์ฌ๋ถ๋ ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์์ ์ ์์ ์ค์ ์ ์ ๊ฐ์ ์กฐ๊ธ์ ์ค์ฐจ๊ฐ ์๋ ๊ฒ์ผ๋ก ๋ณด์ ์ด๋๊ฐ ๋ฌธ์ ๊ฐ ์ฌ์ ํ ์๋ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค.
- Coffeetea / DHDroid ๋์ค์ ๋ฐ์ดํฐ๋ถ์ ๋ฐ ๊ตฌ์์ ํ์ํ์ต๋๋ค.
- ๊ฒฐ๊ณผ์ ์ผ๋ก ๊ฑฐ์ ์ด ๋๋ช ์ด ๋ํ๋ฅผ ์บ๋ฆฌํด ๋ฒ๋ ธ์ต๋๋ค. ์ ๋ dlwocks31์ ๊ณ์ ๊ณ ํต๋ฐ์ ๋ํ์์ต๋๋ค :(
Algorithm : Demand - Proportional - Scheduling
์์ ์ ํธ๋ฅผ ์ผ์ฃผ๋ ์์์ ๊ทธ ๋น์ค์ ์กฐ์ ํ ์ ์๋ค ๋ผ๊ณ ํ๋๋ฐ, ์ ํฌ๋ ๊ทธ์ค ๋น์ค์ ์ง์คํ์ต๋๋ค. ๊ตฌ์ฒด์ ์ผ๋ก๋, ์๋ฎฌ๋ ์ด์ ์ ๋๋ฆฌ๋ฉด์, ๊ฐ ์ฐจ๋๋ค์ด ํน์ ๊ต์ฐจ๋ก์ ํน์ ๋๋ก์ ์กํ์์ ๋๋ง๋ค, ๊ทธ ์ ๋ณด๋ฅผ report ํฉ๋๋ค.
์ด๋ฐ ์ ๋ณด๋ค์ ๋ชจ์๋๋ค๋ฉด, ๊ต์ฐจ๋ก X์์ ๋๋ก a, b์ total jam-time์ ๊ณ์ฐํ ์ ์๊ณ , ์ด total jam-time์ด ๋์ ๋๋ก์ ์ ํธ๋ฅผ ๋ ๋ง์ด ์ด์ด ์ค ํ์๊ฐ ์์์ด ์๋ช ํด ๋ณด์ ๋๋ค. (๊ฑฐ๊ธฐ ์กํ์๋ ์ฐจ๊ฐ ๋ง์ผ๋๊น, ๋ ๋๋ํ๊ฒ ์ด์ด ์ฃผ๋ ๊ฒ์ ๋๋ค) ๋ฐ๋ผ์ ์ด DEMAND ์ ๋น๋กํ๋ (๋๋ ๋ญ ์ ๋นํ ๋ฃจํธ๋ผ๋๊ฐโฆ) ์๊ฐ๊ฐ์ค์น๋ฅผ ์ฃผ์ด ์ฌ์ดํด์ ๋๋ฆฌ๋ ๋ฐฉ์์ ๋๋ค.
Fine Tuning
์ ์๊ณ ๋ฆฌ์ฆ์์ ํ๋ํ ์ ์๋ ์์ด๋์ด๋ ์ ๊ฐ ์ถ๊ฐ๋ก ๋ค์ด๊ฐ๊ณ ๋์ ์ ๊น์ฉ Discussํ๋ฉด์ ๊ณ์ ๋ฐ์ ์์ผ๋๊ฐ์ต๋๋ค. ๋ํ์ ์ผ๋ก ์ด๋ฐ ๊ฒ๋ค์ด ์์ต๋๋ค.
- $t = 1$ ์์์ demand์ $t = 1000$์์์ demand์ ๊ฐ์น๋ ๋๋ฑํ์ง ์๋ค๊ณ ๋ณด์์ต๋๋ค. ๋์ค ํ๋๋ผ๋ฉด ์ด๋ฐ์ด ๋น ๋ฅธ ํธ์ด ์ ๋ฆฌํ๊ธฐ ๋๋ฌธ์ธ๋ฐ, ๋๊ฐ์ด 1์ด๋งํผ ๋นจ๋ผ์ง๋ค๋ฉด ์ด๋ฐ์ ๋นจ๋ผ์ ธ์ผ ๋น ๋ฅด๊ฒ ์ฐจ๋ค์ด ์ค์ด๋ค์ด์ ํ๋ฐ์ด ๋ ๋งํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
- ๊ตฌํํ์ง๋ ๋ชปํ์ง๋ง, ๋ณธ๋ ๊ณํ์๋ ์ค์ ์๋ฎฌ๋ ์ด์ ์ ๊ฑฐ์น ๋ค์, ์๊น๊ฒ ์๊ฐ์ด ์ง๋ ํต๊ณผํ์ง ๋ชปํ ์ฐจ๋ค์ demand์ ๋ ํฐ ๊ฐ์ค์น๋ฅผ ๋ถ์ฌํ๋ ๋ฐฉ์์ด ์์์ต๋๋ค. ์ด ๋ฐฉ์์ (ํ ์คํธํด๋ณด์ง ๋ชปํ์ง๋ง) ์ถฉ๋ถํ ์๋ฏธ๊ฐ ์์์ ๊ฒ์ด๋ผ๊ณ ๋ณด์ ๋๋ค.
- ๊ฐ์ค์น $w = f(d)$ ๋ demand ๊ฐ์์ ๋ํ ํจ์์ ๋๋ค. $f$๋ฅผ ์กฐ๊ธ์ฉ ๋ฐ๊พธ๋ฉด์ ํ๋ํ ์ ์์ต๋๋ค.
์ด ๋ชจ๋ ํ๋์ ๊ฒฐ๊ณผ๊ฐ ๋งจ ์์ ๊ธฐ๋ก๋ ๊ฒฐ๊ณผ์ ๋๋ค.
๊ฒฐ๊ณผ / Discussion
๋ํ๊ฐ ๋๋๊ณ , ๋ฐ๋ก ๊ทผ์ฒ์์ ๋ํ๋ฅผ ์น๋ฅธ, ํ์ ์ ์๋ ์ฌ์ด์ธ ์์ธ๋ํ๊ต @channel ํ๊ณผ ๊ฐ๋จํ Discussion์ ํ์ต๋๋ค. ๊ทธ ํ์ 2018๋ ๋์ Hashcode World Final์ ์ง์ถํ๋ ํ์ผ๋ก, ์ด๋ฒ ๋ํ์์๋ ์ ํฌ๋ณด๋ค 20๋ง์ ์ ๋ ๋์ ์ ์๋ก 40๋ฑ์ ๋์ ์ฑ์ ์ ๊ฑฐ๋์์ต๋๋ค. ์๋ก ์ฑ์ ์ ๋ณด๋ ์๊ฐ ๋๋๋๋ฐ,
- @channel ํ์ D์์ 240๋ง์ ๊ฐ๊น์ด (์ ํฌ๋ณด๋ค 80๋ง์ ๋์) ์ฑ์ ์ ๊ฑฐ๋์์ต๋๋ค.
- ๋ฐ๋ฉด, F๋ฒ์ ์ ์๋ ์ ํฌ ํ์ด 60๋ง์ ์ ๋ ๋์์ต๋๋ค. ์๋ก D์ F๋ฅผ ๋ณด๋ฉฐ ์ด๋ป๊ฒ ํ ๊ฑฐ๋๊ณ ๋ฌผ์ผ๋ฉฐ ๋์ค์ปค์
์ ์งํํ๋๋ฐ, ์ด ํ์๊ฒ ๋ค์ ๋ฐฉ๋ฒ์ (์ ๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ดํดํ๋ค๋ฉด) ๋๋ต ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- D๋ฒ์ ๊ฒฝ์ฐ, Degree๊ฐ ํ๊ท ์ ์ผ๋ก ๋งค์ฐ ์์ต๋๋ค. ๋ฐ๋ผ์, ๊ตณ์ด ๊ธด ์๊ฐ๋์ ํ ๊ธธ์ ์ด์ด์ฃผ๊ธฐ๋ณด๋ค๋, 1์ด์ฉ ๋ฐ๋ก๋ฐ๋ก ๋ฐ๊ฟ์ฃผ๋๋ผ๋ ํน์ ๋๋ก์ ๋๊ธฐ์๊ฐ์ด ๊ทธ๋ ๊ฒ๊น์ง ๊ธธ์ง ์์ผ๋ฏ๋ก, ๋ชจ๋ ์ ํธ ์ฌ์ดํด์ 1์ด๋ก ๊ณ ์ ํฉ๋๋ค.
- ๊ทธ๋ฌ๋, ์ด๋ค ์์๋ก ์ฌ์ดํด์ ๋๋ฆด์ง๋ ์ค์ํฉ๋๋ค. ์ด๋ฅผ ์ค์ ์๋ฎฌ๋ ์ด์ ์ ์งํํ๋ฉด์, ํด์ํ ์ด๋ธ์ ๊ธฐ๋กํ๋ ์์ผ๋ก ๊ฐ intersection๋ง๋ค ์ด๋์ ๋๊ธฐ๊ฐ ๊ฑธ๋ฆฌ๋์ง๋ฅผ ํ์ ํด์ ์ฌ์ดํด์ ์์๋ฅผ ์ต์ ํํฉ๋๋ค.
- ๊ฒฐ๋ก ์ ์ผ๋ก, ์ ํธ๋ฅผ ์ผ์ฃผ๋ ์์์ ๊ทธ ๋น์ค์ ์กฐ์ ํ ์ ์๋ค ์์, ๋น์ค ์ ๋ฒ๋ฆฌ๊ณ ์์ ์ ์ง์คํ ํํ์ ์๋ฃจ์ ์ผ๋ก ๋ณด์ ๋๋ค. ์ผ์ข ์ Dynamic Cycle Ordering ์ด๋ผ๋ ์ด๋ฆ์ ๋ถ์ผ ์ ์๊ฒ ๋ค์.
- 1๋ฑํ์ ์ ์๋ 1050๋ง ์ ์ ๋๊ณ , 1000๋ง์ ์ ๋์ผ๋ฉด 10์๊ถ ํ์ด์์ต๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก, ์ ํฌ์ Demand-Proportional Scheduling ๊ณผ @channel์ Dynamic Cycle Ordering์ด ์ํธ ๋ณด์์ ์ธ ๋ฐฉ๋ฒ์ด๋ฉฐ, ์ ํฌ๊ฐ ์ ํธ๋ ์ผ์ด์ค (F) ์ @channelํ์ด ์ ํผ ์ผ์ด์ค (D) ์ max์ ์๋ฅผ ์ทจํ๋ฉด 1030๋ง ์ ์ ๋์์ ๋ณผ ๋, ์ต์์๊ถ ํ์ ์ด ๋ ๊ฐ์ง ์ ๋ต์ ๊ฐ๊ฐ ์ฝ๋ฉํด์ ์ ์ถํ๊ฑฐ๋, ๋ ์ ๋ต์ ์ ์ถฉํ ๋ฐฉ์์ด ์๊ฑฐ๋, ๋๋ ์ฐ๋ฆฌ ๋ชจ๋ ์๊ฐ์ง ๋ชปํ Novelํ ๋ฐฉ๋ฒ (์์์ง๋ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค๋ง) ์ผ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค. ๋ ๊ฐ์ง ๋ชจ๋ ์ด๋ป๊ฒ ๋ณด๋ฉด ์์ฐ์ค๋ฝ๊ธฐ๋ ํด์, ๋๊ฐ์ง ๋ชจ๋ ๊ตฌํํ๋๋ฐ ์ฑ๊ณตํ์ผ๋ฉด ์ํดํ์ด ์๋์๋ ์ถ์ต๋๋ค.
์์ผ๋ก๋ฅผ ์ํด
ํด์์ฝ๋๋ฅ ๋ํ๋ ์ฌ์ค ์ ํฌ์๊ฒ๋ ๋งค์ฐ ์ฌ๋ฐ๊ธฐ๋ ํ๊ณ , ์ด๋ฐ ํ์์๋ ์๊ฐํ๊ธฐ ์ด๋ ค์ด ๊ฒ๋ค์ ๊ณต๋ถํ๋ ๊ธฐํ์ด๊ธฐ ๋๋ฌธ์ ๋๋ฆ๋๋ก ํ์ผ๋ก์จ ๊ณต๋ถํ๋ ์ฆ๊ฑฐ์์ด ์์ต๋๋ค. ๊ทธ๋์ ์๋ง (์ ์ด๋ ๋ด๋ ์๋) ๊ฐ์ ํ์ผ๋ก ๋๊ฐ ์์ ์ธ๋ฐ, ๊ทธ๋๋ฅผ ์ํด, ๋๋ ๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ๋ํ๋ฅผ ์ํด์๋ผ๋ ์ด๋ฒ ๋ํ๋ฅผ ํตํ ๊ตํ์ ๊ธฐ๋กํด ๋๋ ค๊ณ ํฉ๋๋ค.
- ๊ฒฐ๊ตญ์ ๊ตฌํ๋ ฅ์ด ์ค์ํฉ๋๋ค. ํนํ Hashcode๊ฐ ๋งค๋
๊ทน๋๋ก ๊ตฌํ์ด ๋นก์ธ์ง๊ณ ์๊ณ , ์ ํ์๊ฐ 4์๊ฐ (์ค์ ๋ก๋ 15๋ถ๋์ ์คํธ๋ฆฌ๋ฐ์ผ๋ก ์๊ฐ์ ๋ ๋ฆฌ๊ธฐ ๋๋ฌธ์ 3์๊ฐ 45๋ถ) ๋์ ๋ฌธ์ ์ ๊ธฐ๋ณธ์ ์ธ ๊ทธ๋ฆฌ๋ ์๋ฃจ์
์ ์ ์ํ๊ธฐ์กฐ์ฐจ ์ด๋ ค์์ง๋ ํ์์ด ๊ฐ์๋๊ณ ์์ต๋๋ค. ๊ฒฐ๊ตญ ์ด๋ฒ ๋ํ์ ์ต์์๊ถ ์ ๋ต ์ค ํ๋๋, Demand-Proportional Scheduling ๊ณผ Dynamic Cycle Ordering ์ด๋ผ๋ ์ ํ ๊ฒฐ์ด ๋ค๋ฅธ ๋๊ฐ์ง ๋ฐฉ๋ฒ์ ๋ชจ๋ ์ฝ๋ฉํ๋๋ฐ ์ฑ๊ณตํ๋ ๊ฒ์ธ๋ฐ, ์ด๋ฅผ ์ํด์๋ ์ ์ด๋ 2๋ช
์ด์์ ํ์์ด ์์ ์ ์ผ๋ก ์๋ฃจ์
์ ์ฝ๋๋ก ์ฎ๊ธฐ๋ ๋ฅ๋ ฅ์ด ํ์ํฉ๋๋ค.
- Dlwocks31์ด ์ฐ๋ฆฌ ์ค์์๋ ๊ตฌํ์ ๊ฐ์ฅ ์ํ์ง๋ง, ๋๋จธ์ง 3๋ช ์ ๊ตฌํ๋ ฅ์ด ํ์ ํ ๋จ์ด์ง๋ ๊ฒ์ ๊ต์ฅํ ํฐ ๊ฒฐ์ ์ ๋๋ค. ์ด๋ฅผ ๋ณด์ถฉํ๊ธฐ ์ํด, ์ต๋ํ ์ ํฌ๊ฐ (ํนํ ๊ทธ๋๋ง C++ ๊ตฌํ๋ ฅ์ด ๋์ ์ ๊ฐ) dlwocks31์ ๋ณด์กฐํด์ฃผ๊ธฐ ์ํด ์ด๋ฒ์๋ ํ์ผ์ ๋๋์ด GIT์ ์จ๋ณด๊ธฐ๋ ํ๋๋ฐ, ๊ฒฐ๊ตญ ๋ํ๊ฐ ๋๋๊ณ ๋๋ ๊ฒ์ ์ด ๋ชจ๋ ๋ฐฉ๋ฒ์ ๋ถ์กฑํ ๊ตฌํ๋ ฅ์ ๋ฉ์๋ณด๋ ค๋ ์๋์๊ณ ๊ทผ๋ณธ์ ์ธ ํด๊ฒฐ์ฑ ์ด ๋์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค.
- ์์ด๋์ด ์บ์นญ ์ดํ, ์ด๊ฑธ ๋ฐ๋ก ์ฝ๋๋ก ์ฎ๊ฒจ์ ํ ์คํธํด๋ด์ผ ํฉ๋๋ค. ์ค์ ๋ก Coffeetea๊ฐ ์ ์ํ ๋ง์ ํด๋ฆฌ์คํฑํ ๋ฐฉ๋ฒ๋ค์ ๋ฐ๋ ์ฑ ์ฐ์ง ๋ชปํ๋๋ฐ ์ด๊ฒ๋ ๊ฒฐ๊ตญ ์๋ํด๋ด์ผ ์๋ ๋ฌธ์ ์ ๋๋ค.
์๋ ์๋ ๋น์ทํ๊ฒ ํ๋ ๋ง์ด์ง๋ง, ๋ํ ์์ฒด๋ ํด๋ณด๋ฉด ์ ๋ง ์ฌ๋ฐ์ต๋๋ค. ์๋ฃจ์ ๊น๋ ๊ณผ์ ์ด ๋ญ๊ฐ ๋ค๋ฅธ PS๋ํ๋ ๊ต์ฅํ ์ด์ง์ ์ด๋ฉด์๋ ์ ์ ์ฌ๋ผ๊ฐ๋ ์ง๋ฆฟํ ๊ทธ๋ฐ ๋ง์ด ์๋๋ฐ, ๊ตฌํ๋ณด๋ค๋ ์กฐ๊ธ๋ ์ต์ ํ ๋ง์ด ๋๋ ๋ํ๊ฐ ๋์์ผ๋ฉด ํ๋ ๊ธฐ๋๊ฐ ์์ง๋ง ๋ฐ๋๋ก ๊ฐ๋๊ฒ ๊ฐ์ต๋๋ค.
์ฌ์ ํ ์๋ Library์ฒ๋ผ, ์ถํ ํ ํฌ๋์ผ๋ก ๊ฐ๋ฅด๋๋ผ๋ ๊ฒฐ๊ตญ ์ง์ถ๊ถ์ SAT๊ณผ MCMF์ต์ ํ๊ฐ ๊ฐ๋ฅด๋ ๋ฉํ๊ฐ ์ณ๋ค๋ ๋ฏฟ์์๋ ๋ณํ๊ฐ ์์ต๋๋ค. ๊ทธ์ ๋นํ๋ฉด ์ด๋ฒ ๋ํ๋ ์ง์ง ๊ตฌํ์ปต์ธ๊ฒ ๊ฐ์์ ์กฐ๊ธโฆ ํ์ง๋ง ์๋ ์๋ ๊ทธ๋ฌ๋ฏ์ด, ๊น๋ณด๋ฉด ๋๊ตฐ๊ฐ ์ด์ํ ์ต์ ํ๋ฅผ ๋ค๊ณ ์์์๋ ์์ผ๋ฏ๋ก ์์ง ์๋จํ์ง๋ ์์ผ๋ ค๊ณ ํฉ๋๋ค.
๊ตฌ์ฒด์ ์ผ๋ก DEF์ค ํ๋์ ๋ญ๊ฐ ํ๋ก์ฐ๋ก ์ต์ ํํ ์ ์๋๊ฒ ์์๊ฑฐ๋ผ๊ณ ์์ฌํ๊ณ ์์ต๋๋ค. ๊ทธ๋ํ์์ ๋ญ๊ฐ ์ง๋๊ฐ๊ณ ์ด์ฉ๊ณ ํ๋๊ฒ ๋ฑ ํ๋ก์ฐ ๋์๊ฐ ๋์์โฆ
PS๋ฅผ ์ฆ๊ธด๋ค๋ฉด ๊ทธ๋ฅ ์๋ค๋ฅธ ๋๋์ผ๋ก ์ฆ๊ธธ๋งํ, ๊ทธ๋ ์ง ์๊ณ ์๋ Data Science ๋ Optimization์ชฝ์ ๊ด์ฌ์ด ์๋๋ผ๋ ํ๋ฒ์ฏค ํด๋ณผ๋งํ ๋ํ๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋ด๋ ์๋ ํ์ดํ !
Little Piplup ์๊ณ ๋ง์์ด์ :) + @channelํ์ ์ํ ์ง์ถ์ ์์ํ๊ฒ ์ต๋๋ค :)