[ 2023-08-15 ๐Ÿ‡ฐ๐Ÿ‡ท TIL ]

Burkeyยท2023๋…„ 8์›” 15์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
142/157

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜, SQL (oracle)

LV. 2 ๊ธฐ๋Šฅ๊ฐœ๋ฐœ


๋ฌธ์ œ

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ํŒ€์—์„œ๋Š” ๊ธฐ๋Šฅ ๊ฐœ์„  ์ž‘์—…์„ ์ˆ˜ํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค. 
๊ฐ ๊ธฐ๋Šฅ์€ ์ง„๋„๊ฐ€ 100%์ผ ๋•Œ ์„œ๋น„์Šค์— ๋ฐ˜์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜, ๊ฐ ๊ธฐ๋Šฅ์˜ ๊ฐœ๋ฐœ์†๋„๋Š” ๋ชจ๋‘ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๋’ค์— ์žˆ๋Š” 
๊ธฐ๋Šฅ์ด ์•ž์— ์žˆ๋Š” ๊ธฐ๋Šฅ๋ณด๋‹ค ๋จผ์ € ๊ฐœ๋ฐœ๋  ์ˆ˜ ์žˆ๊ณ , 
์ด๋•Œ ๋’ค์— ์žˆ๋Š” ๊ธฐ๋Šฅ์€ ์•ž์— ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ๋ฐฐํฌ๋  ๋•Œ ํ•จ๊ป˜ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.

๋จผ์ € ๋ฐฐํฌ๋˜์–ด์•ผ ํ•˜๋Š” ์ˆœ์„œ๋Œ€๋กœ ์ž‘์—…์˜ ์ง„๋„๊ฐ€ ์ ํžŒ ์ •์ˆ˜ ๋ฐฐ์—ด progresses์™€ 
๊ฐ ์ž‘์—…์˜ ๊ฐœ๋ฐœ ์†๋„๊ฐ€ ์ ํžŒ ์ •์ˆ˜ ๋ฐฐ์—ด speeds๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ 
๊ฐ ๋ฐฐํฌ๋งˆ๋‹ค ๋ช‡ ๊ฐœ์˜ ๊ธฐ๋Šฅ์ด ๋ฐฐํฌ๋˜๋Š”์ง€๋ฅผ return ํ•˜๋„๋ก 
solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•˜์„ธ์š”.

์ž…์ถœ๋ ฅ

progressesspeedsreturn
[93, 30, 55][1, 30, 5][2, 1]
[95, 90, 99, 99, 80, 99][1, 1, 1, 1, 1, 1][1, 3, 2]
  • ์ž‘์—…์˜ ๊ฐœ์ˆ˜(progresses, speeds๋ฐฐ์—ด์˜ ๊ธธ์ด)๋Š” 100๊ฐœ ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • ์ž‘์—… ์ง„๋„๋Š” 100 ๋ฏธ๋งŒ์˜ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • ์ž‘์—… ์†๋„๋Š” 100 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • ๋ฐฐํฌ๋Š” ํ•˜๋ฃจ์— ํ•œ ๋ฒˆ๋งŒ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ•˜๋ฃจ์˜ ๋์— ์ด๋ฃจ์–ด์ง„๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.
    ์˜ˆ๋ฅผ ๋“ค์–ด ์ง„๋„์œจ์ด 95%์ธ ์ž‘์—…์˜ ๊ฐœ๋ฐœ ์†๋„๊ฐ€ ํ•˜๋ฃจ์— 4%๋ผ๋ฉด ๋ฐฐํฌ๋Š” 2์ผ ๋’ค์— ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

์ฝ”๋“œ

function solution(progresses, speeds) {
    let proccess = progresses.map((w) => (100 - w));
    let done = proccess.map((w, i) => Math.ceil(w / speeds[i])); 
  	// ๋‚จ์€ ๊ฐœ๋ฐœ์ผ์ •์ด ์†๋„์— ๋”ฑ ๋งž์ถฐ์„œ ๋–จ์–ด์ง€์ง€ ์•Š์„ ๊ฒฝ์šฐ์—๋Š” 
  	// ๋‹ค์Œ๋‚ ๊นŒ์ง€ ์ผํ•˜๋‹ˆ ์˜ฌ๋ฆผ์œผ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค. 
    let result = []
    let w_time = done[0], w_count = 1
    
    for (let i = 1; i < done.length; i++){
        if(w_time < done[i]){ 
          // ๋‹ค์Œ ์ผ์ •์ด ์ด์ „ ์ผ์ • ์ค‘์— ๊ฐ€์žฅ ํฐ ์ˆ˜๋ณด๋‹ค ํด ๊ฒฝ์šฐ์—๋งŒ ์ผ์ด ๋งˆ๋ฌด๋ฆฌ ๋จ.
            w_time = done[i]
            result.push(w_count) 
            w_count = 1
        }else{
          	//๋‹ค์Œ ์ผ์ •์ด ์ด์ „ ์ผ์ • ์ค‘์— ๊ฐ€์žฅ ํฐ ์ˆ˜๋ณด๋‹ค ์ž‘์„ ๊ฒฝ์šฐ
            w_count += 1 // ์ผ์ด ๋งˆ๋ฌด๋ฆฌ ๋˜์—ˆ์Œ์„ ์˜๋ฏธ
        }
    }
    result.push(w_count) // ๋งˆ์ง€๋ง‰์œผ๋กœ ์ผํ•˜๊ณ  ์žˆ๋˜๊ฒƒ๋“ค์„ ๋„ฃ์–ด์ค€๋‹ค.
  
    return result;  
}

์„ฑ๋ถ„์œผ๋กœ ๊ตฌ๋ถ„ํ•œ ์•„์ด์Šคํฌ๋ฆผ ์ด ์ฃผ๋ฌธ๋Ÿ‰


ํ…Œ์ด๋ธ” ๊ตฌ์„ฑ

<FIRST_HALF>

NAMETYPENULLABLE
SHIPMENT_IDINT(N)FALSE
FLAVORVARCHAR(N)FALSE
TOTAL_ORDERINT(N)FALSE
  • ์นผ๋Ÿผ FLAVOR์€ ๊ธฐ๋ณธํ‚ค

< ICECREAM_INFO >

NAMETYPENULLABLE
FLAVORVARCHAR(N)FALSE
INGREDIENT_TYPEVARCHAR(N)FALSE
  • ์นผ๋Ÿผ FLAVOR์€ ์™ธ๋ž˜ํ‚ค

๋ฌธ์ œ

์ƒ๋ฐ˜๊ธฐ ๋™์•ˆ ๊ฐ ์•„์ด์Šคํฌ๋ฆผ ์„ฑ๋ถ„ ํƒ€์ž…๊ณผ ์„ฑ๋ถ„ ํƒ€์ž…์— ๋Œ€ํ•œ ์•„์ด์Šคํฌ๋ฆผ์˜ ์ด์ฃผ๋ฌธ๋Ÿ‰์„ 
์ด์ฃผ๋ฌธ๋Ÿ‰์ด ์ž‘์€ ์ˆœ์„œ๋Œ€๋กœ ์กฐํšŒํ•˜๋Š” SQL ๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. 
์ด๋•Œ ์ด์ฃผ๋ฌธ๋Ÿ‰์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ปฌ๋Ÿผ๋ช…์€ TOTAL_ORDER๋กœ ์ง€์ •ํ•ด์ฃผ์„ธ์š”.

์ฝ”๋“œ

SELECT INGREDIENT_TYPE, SUM(TOTAL_ORDER) TOTAL_ORDER
-- ๊ฐ™์€ INGREDIENT_TYPE 
FROM ICECREAM_INFO INNER JOIN FIRST_HALF
ON ICECREAM_INFO.FLAVOR = FIRST_HALF.FLAVOR

-- ICECREAM_INFO.FLAVOR ๊ณผ FIRST_HALF.FLAVOR์˜ ๊ฐ’์ด 
-- ๊ฐ™์€ ๊ฒƒ๋ผ๋ฆฌ ๋ฌถ์–ด์•ผ ํ•˜๊ธฐ์— INNER JOIN ์‚ฌ์šฉ
-- ๊ฐ™์€ ํ‘œํ˜„์œผ๋กœ 
-- FROM ICECREAM_INFO, FIRST_HALF 
-- WHERE ICECREAM_INFO.FLAVOR = FIRST_HALF.FLAVOR
-- ์‚ฌ์šฉ๊ฐ€๋Šฅ 

GROUP BY INGREDIENT_TYPE;
-- ๊ฐ™์€ ๊ฐ’์„ ๊ฐ€์ง„ ๊ฒƒ ๋ผ๋ฆฌ ๋ฌถ์–ด์ค„ ๋•Œ๋Š” GROUP BY ์‚ฌ์šฉ
profile
์Šคํƒฏ ์˜ฌ๋ฆฌ๋Š” ์ค‘

1๊ฐœ์˜ ๋Œ“๊ธ€

comment-user-thumbnail
2023๋…„ 8์›” 15์ผ

์ •๋ฆฌ๊ฐ€ ์ž˜ ๋œ ๊ธ€์ด๋„ค์š”. ๋„์›€์ด ๋์Šต๋‹ˆ๋‹ค.

๋‹ต๊ธ€ ๋‹ฌ๊ธฐ