[ 2023-08-16 ๐Ÿƒƒ TIL ]

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

TIL

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

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค LV. 2


LV. 2 ํ”ผ๋กœ๋„

๋ฌธ์ œ

XX๊ฒŒ์ž„์—๋Š” ํ”ผ๋กœ๋„ ์‹œ์Šคํ…œ(0 ์ด์ƒ์˜ ์ •์ˆ˜๋กœ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค)์ด ์žˆ์œผ๋ฉฐ, 
์ผ์ • ํ”ผ๋กœ๋„๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋˜์ „์„ ํƒํ—˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 
์ด๋•Œ, ๊ฐ ๋˜์ „๋งˆ๋‹ค ํƒํ—˜์„ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ "์ตœ์†Œ ํ•„์š” ํ”ผ๋กœ๋„"์™€ 
๋˜์ „ ํƒํ—˜์„ ๋งˆ์ณค์„ ๋•Œ ์†Œ๋ชจ๋˜๋Š” "์†Œ๋ชจ ํ”ผ๋กœ๋„"๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. 
"์ตœ์†Œ ํ•„์š” ํ”ผ๋กœ๋„"๋Š” ํ•ด๋‹น ๋˜์ „์„ ํƒํ—˜ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•˜๋Š” ์ตœ์†Œํ•œ์˜ ํ”ผ๋กœ๋„๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ, 
"์†Œ๋ชจ ํ”ผ๋กœ๋„"๋Š” ๋˜์ „์„ ํƒํ—˜ํ•œ ํ›„ ์†Œ๋ชจ๋˜๋Š” ํ”ผ๋กœ๋„๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. 
์˜ˆ๋ฅผ ๋“ค์–ด "์ตœ์†Œ ํ•„์š” ํ”ผ๋กœ๋„"๊ฐ€ 80, 
"์†Œ๋ชจ ํ”ผ๋กœ๋„"๊ฐ€ 20์ธ ๋˜์ „์„ ํƒํ—˜ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์œ ์ €์˜ ํ˜„์žฌ ๋‚จ์€ ํ”ผ๋กœ๋„๋Š” 80 ์ด์ƒ ์ด์–ด์•ผ ํ•˜๋ฉฐ, 
๋˜์ „์„ ํƒํ—˜ํ•œ ํ›„์—๋Š” ํ”ผ๋กœ๋„ 20์ด ์†Œ๋ชจ๋ฉ๋‹ˆ๋‹ค.

์ด ๊ฒŒ์ž„์—๋Š” ํ•˜๋ฃจ์— ํ•œ ๋ฒˆ์”ฉ ํƒํ—˜ํ•  ์ˆ˜ ์žˆ๋Š” ๋˜์ „์ด ์—ฌ๋Ÿฌ๊ฐœ ์žˆ๋Š”๋ฐ, 
ํ•œ ์œ ์ €๊ฐ€ ์˜ค๋Š˜ ์ด ๋˜์ „๋“ค์„ ์ตœ๋Œ€ํ•œ ๋งŽ์ด ํƒํ—˜ํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค. 
์œ ์ €์˜ ํ˜„์žฌ ํ”ผ๋กœ๋„ k์™€ ๊ฐ ๋˜์ „๋ณ„ "์ตœ์†Œ ํ•„์š” ํ”ผ๋กœ๋„", 
"์†Œ๋ชจ ํ”ผ๋กœ๋„"๊ฐ€ ๋‹ด๊ธด 2์ฐจ์› ๋ฐฐ์—ด dungeons ๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ,
์œ ์ €๊ฐ€ ํƒํ—˜ํ• ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ๋˜์ „ ์ˆ˜๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

์ œํ•œ์‚ฌํ•ญ

  • k๋Š” 1 ์ด์ƒ 5,000 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • dungeons์˜ ์„ธ๋กœ(ํ–‰) ๊ธธ์ด(์ฆ‰, ๋˜์ „์˜ ๊ฐœ์ˆ˜)๋Š” 1 ์ด์ƒ 8 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • dungeons์˜ ๊ฐ€๋กœ(์—ด) ๊ธธ์ด๋Š” 2 ์ž…๋‹ˆ๋‹ค.
  • dungeons์˜ ๊ฐ ํ–‰์€ ๊ฐ ๋˜์ „์˜ ["์ตœ์†Œ ํ•„์š” ํ”ผ๋กœ๋„", "์†Œ๋ชจ ํ”ผ๋กœ๋„"] ์ž…๋‹ˆ๋‹ค.
  • "์ตœ์†Œ ํ•„์š” ํ”ผ๋กœ๋„"๋Š” ํ•ญ์ƒ "์†Œ๋ชจ ํ”ผ๋กœ๋„"๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์Šต๋‹ˆ๋‹ค.
  • "์ตœ์†Œ ํ•„์š” ํ”ผ๋กœ๋„"์™€ "์†Œ๋ชจ ํ”ผ๋กœ๋„"๋Š” 1 ์ด์ƒ 1,000 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • ์„œ๋กœ ๋‹ค๋ฅธ ๋˜์ „์˜ ["์ตœ์†Œ ํ•„์š” ํ”ผ๋กœ๋„", "์†Œ๋ชจ ํ”ผ๋กœ๋„"]๊ฐ€ ์„œ๋กœ ๊ฐ™์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

kdungeonsresult
80[[80,20],[50,40],[30,10]]3

์ฝ”๋“œ

function solution(k, dungeons) {
    const LENG = dungeons.length;
    let answer = []; 
    var visited = Array(LENG).fill(false); // ๋ฐฉ๋ฌธ ์—ฌ๋ถ€ ํŒ๋‹จ๋ฐฐ์—ด
    
    function DFS(depth, hp) {
        
        answer.push(depth) // ์ตœ๋Œ€ ๋„๋‹ฌํ•œ ๊นŠ์ด๋ฅผ ๋ฐฐ์—ด์— ๋„ฃ๋Š”๋‹ค.
        
        for (let i = 0; i < LENG; i++) {
            if (!visited[i] & dungeons[i][0] <= hp) {
                
                visited[i] = true 
              	// ํ˜„์žฌ depth๊นŒ์ง€ ๋ฐฉ๋ฌธํ•จ์„ ์ฒดํฌ
                DFS (depth + 1, hp - dungeons[i][1])
              	// ์ง€๊ธˆ๊นŒ์ง€์˜ ๋ˆ„์  ํ”ผ๋กœ๋„์™€ ๋‹ค์Œ depth ๊ฐ’ ํ™•์ธ์„ ์œ„ํ•œ ์žฌ๊ท€
              
                visited[i] = false 
             	// depth์˜ ์ž์‹๋…ธ๋“œ์˜ ๋๊นŒ์ง€ ๊ฐ€๋ฉด ๋™์ผ 
                // depth์˜ ๋‹ค์Œ ๊ฐ’ ํ™•์ธ์„ ์œ„ํ•ด false๋กœ ๋ณ€๊ฒฝ
            }
        }
    }
    
    DFS (0, k)
    return Math.max(...answer);
}

์˜ค๋žซ๋งŒ์— DFS๋ฌธ์ œ๋ฅผ ํ’€๋ คํ•˜๋‹ˆ ์–ด๋ ค์› ๋‹ค.. ํ•˜์ง€๋งŒ ๋‹ค์Œ์— ๊ฐ™์€ ์œ ํ˜•์˜ ๋ฌธ์ œ๊ฐ€ ๋‚˜์˜ค๋ฉด ํ˜ผ์ž ํ•ด๊ฒฐ ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค.


LV. 1 ๋ชจ์˜๊ณ ์‚ฌ

๋ฌธ์ œ

์ˆ˜ํฌ์ž๋Š” ์ˆ˜ํ•™์„ ํฌ๊ธฐํ•œ ์‚ฌ๋žŒ์˜ ์ค€๋ง์ž…๋‹ˆ๋‹ค. 
์ˆ˜ํฌ์ž ์‚ผ์ธ๋ฐฉ์€ ๋ชจ์˜๊ณ ์‚ฌ์— ์ˆ˜ํ•™ ๋ฌธ์ œ๋ฅผ ์ „๋ถ€ ์ฐ์œผ๋ ค ํ•ฉ๋‹ˆ๋‹ค. 
์ˆ˜ํฌ์ž๋Š” 1๋ฒˆ ๋ฌธ์ œ๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ๋ฌธ์ œ๊นŒ์ง€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฐ์Šต๋‹ˆ๋‹ค.

1๋ฒˆ ์ˆ˜ํฌ์ž๊ฐ€ ์ฐ๋Š” ๋ฐฉ์‹: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ...
2๋ฒˆ ์ˆ˜ํฌ์ž๊ฐ€ ์ฐ๋Š” ๋ฐฉ์‹: 2, 1, 2, 3, 2, 4, 2, 5, 
				   2, 1, 2, 3, 2, 4, 2, 5, ...
3๋ฒˆ ์ˆ˜ํฌ์ž๊ฐ€ ์ฐ๋Š” ๋ฐฉ์‹: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 
				   3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ...

1๋ฒˆ ๋ฌธ์ œ๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ๋ฌธ์ œ๊นŒ์ง€์˜ ์ •๋‹ต์ด ์ˆœ์„œ๋Œ€๋กœ ๋“ค์€ ๋ฐฐ์—ด answers๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, 
๊ฐ€์žฅ ๋งŽ์€ ๋ฌธ์ œ๋ฅผ ๋งžํžŒ ์‚ฌ๋žŒ์ด ๋ˆ„๊ตฌ์ธ์ง€ ๋ฐฐ์—ด์— ๋‹ด์•„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

์ œํ•œ ์กฐ๊ฑด

  • ์‹œํ—˜์€ ์ตœ๋Œ€ 10,000 ๋ฌธ์ œ๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฌธ์ œ์˜ ์ •๋‹ต์€ 1, 2, 3, 4, 5์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.
  • ๊ฐ€์žฅ ๋†’์€ ์ ์ˆ˜๋ฅผ ๋ฐ›์€ ์‚ฌ๋žŒ์ด ์—ฌ๋Ÿฟ์ผ ๊ฒฝ์šฐ, returnํ•˜๋Š” ๊ฐ’์„ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•ด์ฃผ์„ธ์š”.

์ž…์ถœ๋ ฅ ์˜ˆ

answersreturn
[1,2,3,4,5][1]
[1,3,2,4,2][1,2,3]

์ฝ”๋“œ

function solution(answers) {
    const one = [1, 2, 3, 4, 5], two = [2, 1, 2, 3, 2, 4, 2, 5],
          three = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5] ;
    let answer = [0, 0, 0] // 1,2,3์˜ ์ ์ˆ˜๋ฅผ ๋„ฃ๋Š” ๋ฐฐ์—ด
    
    answers.forEach((a, i) => {
        if (a == one[i % 5]){
            answer[0] += 1
        }
        if (a == two[i % 8]){
            answer[1] += 1
        }
        if (a == three[i % 10]){
            answer[2] += 1
        }
    })
    
    let max_answer = Math.max(...answer)
    // ์ œ์ผ ๋งŽ์ด ๋งž์€ ๊ฐ’์„ ์•Œ์•„๋‚ด๊ธฐ
    
    let result = []
    answer.forEach((a, i) => {
        if(a == max_answer){
            result.push(i + 1)
        }
    }) // ๋งŽ์ด ๋งž์€ ์‚ฌ๋žŒ์ด ๋ˆ„๊ตฌ์ธ์ง€ ์ฐพ์•„ ๋ฐฐ์—ด์— ๋„ฃ๋Š”๋‹ค.
    
    return result
}

SQL ๊ฐ€๊ฒฉ์ด ์ œ์ผ ๋น„์‹ผ ์‹ํ’ˆ์˜ ์ •๋ณด ์ถœ๋ ฅํ•˜๊ธฐ (Oracle)

๋ฌธ์ œ

๋‹ค์Œ์€ ์‹ํ’ˆ์˜ ์ •๋ณด๋ฅผ ๋‹ด์€ FOOD_PRODUCT ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค. 
FOOD_PRODUCT ํ…Œ์ด๋ธ”์€ ๋‹ค์Œ๊ณผ ๊ฐ™์œผ๋ฉฐ 
PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICE๋Š” 
์‹ํ’ˆ ID, ์‹ํ’ˆ ์ด๋ฆ„, ์‹ํ’ˆ ์ฝ”๋“œ, ์‹ํ’ˆ๋ถ„๋ฅ˜, ์‹ํ’ˆ ๊ฐ€๊ฒฉ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

FOOD_PRODUCT ํ…Œ์ด๋ธ”์—์„œ ๊ฐ€๊ฒฉ์ด ์ œ์ผ ๋น„์‹ผ ์‹ํ’ˆ์˜ 
์‹ํ’ˆ ID, ์‹ํ’ˆ ์ด๋ฆ„, ์‹ํ’ˆ ์ฝ”๋“œ, ์‹ํ’ˆ๋ถ„๋ฅ˜, ์‹ํ’ˆ ๊ฐ€๊ฒฉ์„ ์กฐํšŒํ•˜๋Š” 
SQL๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

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

Column nameTypeNullable
PRODUCT_IDVARCHAR(10)FALSE
PRODUCT_NAMEVARCHAR(50)FALSE
PRODUCT_CDVARCHAR(10)TRUE
CATEGORYVARCHAR(10)TRUE
PRICENUMBERTRUE

์ฝ”๋“œ

-- MAX() ์‚ฌ์šฉ
SELECT * 
FROM FOOD_PRODUCT
WHERE PRICE = (
		SELECT MAX(PRICE) 
        FROM FOOD_PRODUCT 
     ); // ์ œ์ผ ํฐ PRICE๊ฐ’๊ณผ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์•„ ์ถœ๋ ฅ

-- ORDER BY์™€ rownum์˜ ์‚ฌ์šฉ
SELECT *
  FROM (SELECT *
        FROM FOODPRODUCT
        ORDER BY PRICE DESC); //๋จผ์ € PRICE๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ
WHERE ROWNUM = 1;

์ œ๊ฐ€ ์ƒ๊ฐํ•ด๋ดค์„ ๋•Œ๋Š” MAX()๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
๊ฐ€์žฅ ๋น„์‹ผ PRICE์˜ ๊ฐ’์„ ๊ฐ€์ง„ ๋ฐ์ดํ„ฐ๊ฐ€ 1๊ฐœ ์ด์ƒ์ผ ๋•Œ
์•„๋ž˜ ORDER BY๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ์—๋Š” ๋ฌด์กฐ๊ฑด 1๊ฐœ๋งŒ ๋‚˜์˜ค๊ธฐ ๋–„๋ฌธ์—
MAX()๋ฅผ ์‚ฌ์šฉํ•œ SQL์ด ์ข€๋” ๋ฌธ์ œ์—์„œ ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค์ง€ ์•Š์„๊นŒ ์ƒ๊ฐ๋“ญ๋‹ˆ๋‹ค.

profile
์Šคํƒฏ ์˜ฌ๋ฆฌ๋Š” ์ค‘

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