Skip to content

Latest commit

ย 

History

History
139 lines (121 loc) ยท 6.11 KB

programmers.md

File metadata and controls

139 lines (121 loc) ยท 6.11 KB

๋ฌธ์ œ๋ณ„

์ถ”์„ ํŠธ๋ž˜ํ”ฝ

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๊ฐ€์ง€ ๋‹จ๊ณ„๋กœ ๊ตฌ๋ถ„.

  1. ๋…ธ๋“œ์˜ ์ขŒํ‘œ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŠธ๋ฆฌ๋ฅผ ์ƒ์„ฑ
  2. ๋ฐ”์ด๋„ˆ๋ฆฌ ํŠธ๋ฆฌ์ˆœํšŒ

๋‹จ๊ณ„๋ณ„๋กœ ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•œ ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  1. ์ขŒํ‘œ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŠธ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•.
    a.์ฒซ๋ฒˆ์งธ ๋ฐฉ๋ฒ•.
    inorder์™€ level์ด๋ ‡๊ฒŒ 2๊ฐ€์ง€๋กœ ์ •๋ ฌ์„ ํ•˜๊ณ  ํŠธ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
    inorder๋กœ ์ •๋ ฌํ• ๋•Œ๋Š” ๋…ธ๋“œ์˜ x์ขŒํ‘œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๋ฉด ๋œ๋‹ค.

    b.๋‘๋ฒˆ์งธ ๋ฐฉ๋ฒ•
    ๋ฌธ์ œ์˜ ์กฐ๊ฑด์— '๊ฐ™์€ ๋ ˆ๋ฒจ(level)์— ์žˆ๋Š” ๋…ธ๋“œ๋Š” ๊ฐ™์€ y ์ขŒํ‘œ๋ฅผ ๊ฐ€์ง„๋‹ค.'๋ผ๊ณ  ๋˜์–ด ์žˆ๋‹ค.
    ์ฆ‰ ๋ ˆ๋ฒจ๋กœ ์ •๋ ฌํ•˜๋ฉด ๋ฐ”์ด๋„ˆ๋ฆฌ ํŠธ๋ฆฌ์— ์ˆซ์ž๋ฅผ ๋„ฃ์€ ์ˆœ์„œ๊ฐ€ ๋‚˜์˜จ๋‹ค.
    ๋ฐ”์ด๋„ˆ๋ฆฌ ํŠธ๋ฆฌ๋ฅผ ์ƒ์„ฑํ• ๋•Œ ์ˆซ์ž๋ฅผ ๋„ฃ์€ ์ˆœ์„œ๋ฅผ ๋‹ค๋ฅด๊ฒŒํ•˜๋ฉด ์ƒ์„ฑ๋˜๋Š” ํŠธ๋ฆฌ์˜ ๋ชจ์–‘์ด ๋‹ฌ๋ผ์ง„๋‹ค.
    ๋จผ์ € ๋„ฃ์€ ์ˆซ์ž๊ฐ€ ๋†’์€ ๋ ˆ๋ฒจ์„ ์ฐจ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
    ๋ ˆ๋ฒจ๋กœ ์ •๋ ฌํ•  ๋•Œ๋Š” y๊ฐ’์˜ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๋ฉด ๋œ๋‹ค.
    ์ •๋ ฌํ•œ ์ˆœ์„œ๋Œ€๋กœ ๋„ฃ์œผ๋ฉด ๋ฐ”์ด๋„ˆ๋ฆฌ ํŠธ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

  2. ๋ฐ”์ด๋„ˆ๋ฆฌ ํŠธ๋ฆฌ์ˆœํšŒ
    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

์ž…์–‘ ์‹œ๊ฐ ๊ตฌํ•˜๊ธฐ(2)

-- 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๋“ฑ์œผ๋กœ ๋ฐ”๊พธ์–ด ๋ณด์—ฐ ๋‹ต์ด ์•ˆ๋‚˜์˜จ๋‹ค.