๐Ÿ”’Algorithm

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค[JS] > ๊ฒน์น˜๋Š” ์„ ๋ถ„์˜ ๊ธธ์ด

devWarrior 2024. 7. 20. 15:51

 

๐Ÿ”ฅ๋ฌธ์ œ๋งํฌ

https://school.programmers.co.kr/learn/courses/30/lessons/120876

 

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

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

 

 

๐Ÿ”ฅํ’€์ด

๋ฌธ์ œ์˜ ํ•ต์‹ฌ์€ ๊ฒน์น˜๋Š” ๊ธธ์ด๋ฅผ count ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋‚˜๋Š” ์„ ๋ถ„์˜ ์‹œ์ž‘์ ๊ณผ ๋์ ์ด ์ •์ˆ˜๋กœ ์ฃผ์–ด์ง„๋‹ค๋Š” ์‚ฌ์‹ค์„ ์ธ์ง€ํ•˜์—ฌ ์ •์ˆ˜์‚ฌ์ด์˜ ์ˆ˜๋ฅผ ์ด์šฉํ–ˆ๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด [1,3]๊ณผ [2,4] ๋ผ๋Š” ์„ ๋ถ„์ด ์ฃผ์–ด์ง„๋‹ค๋ฉด ์šฐ๋ฆฌ๋Š” ๊ฐ๊ฐ์˜ ์„ ๋ถ„ ์˜์—ญ์— 1.5, 2.5, 3.5 ์ค‘ ๋ช‡๊ฐœ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋ฉด ๋œ๋‹ค. 

 

์œ„์™€๊ฐ™์€ ์›๋ฆฌ๋ฅผ ์ด์šฉํ•ด ๋ชจ๋“  ์„ ๋ถ„์˜ ๊ฐ€์žฅ์ž‘์€ ์‹œ์ž‘์ ๊ณผ ๊ฐ€์žฅ ํฐ ๋์ ์„ ํŒŒ์•…ํ•˜๊ณ  ๊ทธ ์‚ฌ์ด์—์„œ ํ™•์ธํ•ด์•ผ ํ•  .5 ๋‹จ์œ„์˜ ์ˆ˜๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ ์ค‘๋ณต๋œ ๊ธธ์ด๋ฅผ ํ™•์ธํ•˜์˜€๋‹ค. 

function solution(lines) {
    let [[s1,e1],[s2,e2],[s3,e3]] = lines
    let start = Math.min(s1,s2,s3) 
    let end = Math.max(e1,e2,e3)
    let dup_length = 0
    for(let i=start+0.5; i<=end-0.5; ++i){
        let count = 0
        for(const [s,e] of lines){
            if(i>s&&i<e){
                ++count
            }
        }
        if(count>=2){ ++ dup_length}
    }

    return dup_length;
}