https://programmers.co.kr/learn/courses/30/lessons/17676
1์ด : 4.001~5.000 - ๋๋๋ ์๊ฐ์ด 5์ด๋ผ๋ฉด 1์ด๊ฐ ์๋ 0.999์ด๋ฅผ ๋นผ์ผ ์์ํ๋ ์๊ฐ์ด ๋์ด.
ํด๋น ๊ตฌ๊ฐ์ ์์ง ๋๋์ง ์์ ์์ฒญ+์์ผ๋ก 1์ด๋์ (ex: 5์ด๋ถํฐ 5.999์ด๋์) ์์ํ๋ ์์ฒญ์ ์๋ฅผ ๋ํ๋ฉด ๋จ.
https://programmers.co.kr/learn/courses/30/lessons/17678
ํต๊ทผ ์ ํ์ ํ๊ณ ๊ฐ ์ ์๋ ๊ฐ์ฅ ๋ฆ์ ์๊ฐ.
์ค์ ์๋ ์๊ฐ์ ๋์ค ํ๋.
๋งจ ๋ง์ง๋ง์ผ๋ก ์
ํ์ ํ๋ ์ฌ๋๋ณด๋ค 1๋ถ ์ผ์ฐ์ด.
๋งจ ๋ง์ง๋ง์ ์
ํ์ ์๋ฆฌ๊ฐ ๋จ๋ ๊ฒฝ์ฐ์๋ ์
ํ์ด ๋์ฐฉํ๋ ์๊ฐ.
https://programmers.co.kr/learn/courses/30/lessons/42892
ํฌ๊ฒ 2๊ฐ์ง ๋จ๊ณ๋ก ๊ตฌ๋ถ.
- ๋ ธ๋์ ์ขํ๋ฅผ ๋ฐํ์ผ๋ก ๋ฐ์ด๋๋ฆฌ ํธ๋ฆฌ๋ฅผ ์์ฑ
- ๋ฐ์ด๋๋ฆฌ ํธ๋ฆฌ์ํ
๋จ๊ณ๋ณ๋ก ๋ด๊ฐ ์ฌ์ฉํ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค.
-
์ขํ๋ฅผ ๋ฐํ์ผ๋ก ๋ฐ์ด๋๋ฆฌ ํธ๋ฆฌ๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ.
a.์ฒซ๋ฒ์งธ ๋ฐฉ๋ฒ.
inorder์ level์ด๋ ๊ฒ 2๊ฐ์ง๋ก ์ ๋ ฌ์ ํ๊ณ ํธ๋ฆฌ๋ฅผ ์์ฑํ๋ค.
inorder๋ก ์ ๋ ฌํ ๋๋ ๋ ธ๋์ x์ขํ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ฉด ๋๋ค.b.๋๋ฒ์งธ ๋ฐฉ๋ฒ
๋ฌธ์ ์ ์กฐ๊ฑด์ '๊ฐ์ ๋ ๋ฒจ(level)์ ์๋ ๋ ธ๋๋ ๊ฐ์ y ์ขํ๋ฅผ ๊ฐ์ง๋ค.'๋ผ๊ณ ๋์ด ์๋ค.
์ฆ ๋ ๋ฒจ๋ก ์ ๋ ฌํ๋ฉด ๋ฐ์ด๋๋ฆฌ ํธ๋ฆฌ์ ์ซ์๋ฅผ ๋ฃ์ ์์๊ฐ ๋์จ๋ค.
๋ฐ์ด๋๋ฆฌ ํธ๋ฆฌ๋ฅผ ์์ฑํ ๋ ์ซ์๋ฅผ ๋ฃ์ ์์๋ฅผ ๋ค๋ฅด๊ฒํ๋ฉด ์์ฑ๋๋ ํธ๋ฆฌ์ ๋ชจ์์ด ๋ฌ๋ผ์ง๋ค.
๋จผ์ ๋ฃ์ ์ซ์๊ฐ ๋์ ๋ ๋ฒจ์ ์ฐจ์งํ๊ธฐ ๋๋ฌธ์ด๋ค.
๋ ๋ฒจ๋ก ์ ๋ ฌํ ๋๋ y๊ฐ์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ฉด ๋๋ค.
์ ๋ ฌํ ์์๋๋ก ๋ฃ์ผ๋ฉด ๋ฐ์ด๋๋ฆฌ ํธ๋ฆฌ๋ฅผ ์์ฑํ ์ ์๋ค. -
๋ฐ์ด๋๋ฆฌ ํธ๋ฆฌ์ํ
pre order์ post order๋ก ์ํํ๋ค.
๋ชจ๋ฅด๋ฉด ๊ฒ์ใฑใฑ.
https://programmers.co.kr/learn/courses/30/lessons/12920
๊ฐ ์ฝ์ด์ ์๋ฃ์๊ฐ์ ๊ณ ๋ คํ์ง ์๊ณ ์๋ฃ๋๋ฉด ๋ฐ๋ก ๋จ์ ์์ ์ ์์ํ๋ ๋ฌธ์ ์ด๋ค.
Parametric Search๋ก ์์ฑํ๋ฉด ํจ์จ์ฑ๋ ํต๊ณผ๊ฐ ๊ฐ๋ฅํ๋ค.
๊ทธ๋ฆฌ๊ณ ๋ฃจํ๋ฌธ์ ์ ์ํด์ ์์ฑํด์ผ ํจ์จ์ฑ๋ ์ ๋ถ ํต๊ณผ๊ฐ ๋๋ค.
x๋ ์๊ฐ t์ผ, y๋ ์ฒ๋ฆฌํ ์์
์ ์๋ก ๋๋๋ค. ๊ทธ๋ฆฌ๊ณ ์๊ฐ์ ๋ฒ์๋ก ํด์ ์ด์ง ํ์์ ํ๋ค.
๋ฐ์ python ์์ค๋ ์ฐ์ ์์ํ(heap)์ผ๋ก ์ด๋ป๊ฒ๋ ๋น๋ฒผ๋ณผ๋ ค๊ณ ํ๋ค๊ฐ ๋์๋๋ฐ
ํจ์จ์ฑ์ ํ๋๋ ํต๊ณผ๊ฐ ์๋์ง๋ง ํ๋ผ๋ฉํธ๋ฆญ ์ฝ๋๊ฐ ์ ํํ์ง ๋ณด๋๋ฐ ์ ์ฉํ๊ฒ ์ผ์ต๋๋ค.
import heapq
def solution1(n, cores):
h=[(0,core) for core in range(len(cores))]# (์์
์๋ฃ์๊ฐ, ์ฝ์ด์ซ์)
heapq.heapify(h)
while True:#์์
๋ -> ๋ฐ๋ก ์์
์ํ : ์ฝ๋๊ฐ ์งง์์ง ์ด์ .
donetime,donecore=h[0]
if n==1:
return donecore+1
heapq.heapreplace(h,(donetime+cores[donecore],donecore))#์์
์๋ฃ์๊ฐ๊ณผ ์ฝ์ด์์๋ก ์ ๋ ฌ๋จ.
n-=1-- mysql
SELECT h.theHour
, COUNT(DATETIME) AS numberOfItems
FROM (
SELECT 0 AS theHour
UNION ALL SELECT 1
UNION ALL SELECT 2
UNION ALL SELECT 3
UNION ALL SELECT 4
UNION ALL SELECT 5
UNION ALL SELECT 6
UNION ALL SELECT 7
UNION ALL SELECT 8
UNION ALL SELECT 9
UNION ALL SELECT 10
UNION ALL SELECT 11
UNION ALL SELECT 12
UNION ALL SELECT 13
UNION ALL SELECT 14
UNION ALL SELECT 15
UNION ALL SELECT 16
UNION ALL SELECT 17
UNION ALL SELECT 18
UNION ALL SELECT 19
UNION ALL SELECT 20
UNION ALL SELECT 21
UNION ALL SELECT 22
UNION ALL SELECT 23
) AS h
LEFT OUTER JOIN ANIMAL_OUTS
ON hour(ANIMAL_OUTS.DATETIME) = h.theHour
GROUP BY h.theHour์๊ฐ๋๋ณ๋ก ์ง๊ณ๋ฅผ ํ๋ ๋ฌธ์ . 0์๋ถํฐ 23์๊น์ง ํด๋น ์๊ฐ๋์ ์
์๋ ๋๋ฌผ์ ์๋ฅผ ์ถ๋ ฅ. ๋จ ๋๋ฌผ์ ์๊ฐ 0์ธ ์๊ฐ๋ ์ถ๋ ฅ์ ํด์ฃผ์ด์ผ ํจ.
LEFT OUTER JOIN ANIMAL_OUTS ON hour(ANIMAL_OUTS.DATETIME) = h.theHour: join์ํ์ ์ข์ธก์ ์๋ hํ
์ด๋ธ์ ์ ๋ถ ๋์ด. ๊ทธ ์์ ์ฃผ์ด์ง ๊ท์น๋๋ก ํ
์ด๋ธ์ joinํ๋ค. ์ด๋ OUTER JOIN์์ผ๋ก ๊ท์น์ ํด๋นํ๋ ์ฐ์ธก ํ
์ด๋ธ์ ์ด์ด ์๋ ๊ฒฝ์ฐ์๋ null ๊ฐ์ด ๋๋ค.
์ฆ 0์์ 23์๊น์ง ๋์ด๋ hํ
์ด๋ธ์
| theHour |
|---|
| 0 |
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
| 10 |
| 11 |
| 12 |
| 13 |
| 14 |
| 15 |
| 16 |
| 17 |
| 18 |
| 19 |
| 20 |
| 21 |
| 22 |
| 23 |
ON ๋ค์ ์ง์ ๋ ๊ท์น๋๋ก ํ
์ด๋ธ์ join ํ๋ค.
GROUP BY๋ฅผ ํ๊ธฐ ๋๋ฌธ์ animal_outs์์ hour(ANIMAL_OUTS.DATETIME) = theHour์ ํด๋นํ๋ ์ฌ๋ฌ row๊ฐ ํ๋์ ๊ทธ๋ฃน์ ์ด๋ฃจ๊ณ ์๊ฒ ๋๋ค. select๋ช
๋ น์ผ๋ก ์กฐํํ๋ฉด ํ ๊ทธ๋ฃน๋น ํ๋์ row๋ฅผ ๋ณด์ฌ์ค๋ค. ๋ฌผ๋ก ๋น ๊ทธ๋ฃน์ด๋ฉด ๋น row๊ฐ join๋์ด ์์ ๊ฒ์ด๋ค. (์ํ๋ผ์ด์ฆ์์ includeํ๋ฉด ํ์ ํค ์์ ๋ฐฐ์ด์ ์๊ฒ ์ง.) ๊ทธ ์ฌ๋ฌ row์ ๊ฐ์ ์ธ๋ ๋ช
๋ น์ด ๋ฐ๋ก count(datetime)์ด๋ค.
๊ทผ๋ฐ ๋๊ฐ์ผ๋ฉด ์ ๋ ๊ฒ ๊ธธ๊ธฐ๋งํ ์ฟผ๋ฆฌ๋ฅผ ์ํ๋ผ์ด์ฆ๋ก ์ง๊ธฐ๋ณด๋ค๋ ๊ทธ๋ฅ ๋ฐ์์ ์ ์ ํ ๊ฐ๊ณตํ๊ฒ ๋ค.
- ์ฐธ๊ณ 1:
UNION ALL์ (์ปฌ๋ฆผ์ด ๊ฐ์) ๋ ํ ์ด๋ธ์ ์ด์ด๋ถ์ธ๋ค. - ์ฐธ๊ณ 2: mysql์์๋
connect by๊ฐ ์๋ค๊ณ ํ๋ค. ์ค๋ผํด์ ์๋ค๋๋ฐ ๋ญ์ง๋ ๋ชจ๋ฆ.UNIONํน์UNION DISTINCT์ ์ค๋ณต์ ์ ๊ฑฐํจ. ๋น์ฐํ ์ค๋ณต์ ์ ๊ฑฐํ๋๋ผ ์ถ๊ฐ์ ์ธ ์ฐ์ฐ์ํจ. - ์ฐธ๊ณ 3: ๋ค๋ฅธ ์ฝ๋๋ฅผ ๋ณด๋ฉด ๋ณ์๋ฅผ ์ ์ธํด์ ํ๋ ๋ฐฉ๋ฒ๋ ์๋ค.
ANIMAL_OUTS์ ์๋ ๋๋ฌผ์ ์๋ฒ์ผ๋ก ๋๋ฒ๋ง ํ๋ ๋ฐฉ์์ด๋ค. ๊ทธ๋ฐ๋ฐ ์๋ฅผ ๋ค์ด ๋๋ฌผ์ ์ซ์๊ฐ 3๋ง๋ฆฌ๋ผ๋ฉด 0,1,2๊น์ง๋ง ๋๋ฒ๋ง๋์ด์ 0์ 1์ 2์๋ง ์นด์ดํธ ํ๊ธฐ๋๋ฌธ์ ์ ๋๋ก ๋ต์ด ์๋์ด. ํ์ธํ๋ ๋ฐฉ๋ฒ์ ํด๋น์ฝ๋์์FROM ANIMAL_OUTS๋์FROM (SELECT * FROM ANIMAL_OUTS LIMIT 3) AS e๋ฑ์ผ๋ก ๋ฐ๊พธ์ด ๋ณด์ฐ ๋ต์ด ์๋์จ๋ค.