ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

[๋ฌธ์ œ]

https://school.programmers.co.kr/learn/courses/30/lessons/12987?language=javascript 

 

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

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

programmers.co.kr

 

[ํ’€์ด]

ํˆฌํฌ์ธํ„ฐ์˜ ๊ฐœ๋…์„ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด ์‰ฝ๊ฒŒ ํ’€๋ฆฌ๋Š” ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค.

 

์–ด์ฐจํ”ผ A์˜ ์ˆœ์„œ๋Š” ์ •ํ•ด์ ธ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, A๊ฐ€ ๋Š˜ ๋จผ์ € ๊ฒฝ๊ธฐ์— ๋‚ด๋ณด๋‚ผ ์‚ฌ์›์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ A์™€ B๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•˜์—ฌ ํˆฌํฌ์ธํ„ฐ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

์˜ˆ์ œ 1๋ฒˆ์˜ A, B ๋ฐฐ์—ด์„ ์ •๋ ฌํ•œ ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

[ 1, 3, 5, 7 ]
[ 2, 2, 6, 8 ]

A์— ์ ‘๊ทผํ•  left, B์— ์ ‘๊ทผํ•  right๋ฅผ ๊ฐ๊ฐ 0์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ํˆฌํฌ์ธํ„ฐ๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  • A[left] < B[right] ๋ผ๋ฉด B๊ฐ€ ์Šน๋ฆฌํ•˜๊ณ  answer++๋˜๋ฉฐ left++, right++๋กœ ๊ฐฑ์‹ 
  • A[left] >= B[right]๋ผ๋ฉด right++ํ•˜์—ฌ ๋‹ค์Œ B์„ ์ˆ˜์™€ ๊ฒจ๋ฃจ๊ฒŒ ํ•จ 

์œ„์˜ ๊ณผ์ •์„ ํ†ตํ•ด ๋งˆ์ง€๋ง‰ ๋ฐฐ์—ด๊นŒ์ง€ ํ™•์ธํ•˜๋ฉด answer๊ฐ’์ด 3์ด ๋˜์–ด ์ด 3๋ช…์˜ ์„ ์ˆ˜๊ฐ€ ์Šน๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š”๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

[์ฝ”๋“œ]

function solution(A, B) {
    var answer = 0;
    const n = A.length;
    A.sort((a, b) => a - b);
    B.sort((a, b) => a - b);
    
    let left = 0;
    let right = 0;
    
    while(right < n) {
        if(A[left] < B[right]) {
            answer++;
            left++;
            right++;
        } else {
            right++;
        }
    }
    return answer;
}