๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ฝ”๋”ฉํ…Œ์ŠคํŠธ/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[Javascript] ์‹ค์ „ ๋Œ€๋น„ ๋ชจ์˜๊ณ ์‚ฌ 1์ฐจ 1๋ฒˆ

๋‘ ์ •์ˆ˜ x, y์—์„œ ๊ณตํ†ต์œผ๋กœ ๋‚˜ํƒ€๋‚˜๋Š” ์ •์ˆ˜์˜ ์ง๊ฟ์„ ์ฐพ๊ณ , ์ง๊ฟ์˜ ์ตœ๋Œ€๊ฐ’์„ ๊ตฌํ•˜์—ฌ ๋ฌธ์ž์—ด๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฌธ์ œ
์กฐ๊ฑด 1. ์ง๊ฟ์ด ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด "-1"์„ ๋ฐ˜ํ™˜
์กฐ๊ฑด 2. ์ง๊ฟ์ด 0์œผ๋กœ๋งŒ ๊ตฌ์„ฑ๋๋‹ค๋ฉด "0"์„ ๋ฐ˜ํ™˜
์กฐ๊ฑด 3. ๋‘ ์ •์ˆ˜๋Š” 0์œผ๋กœ ์‹œ์ž‘ํ•˜์ง€ ์•Š๋Š”๋‹ค.
์กฐ๊ฑด 4. ์ง๊ฟ์˜ ์ˆ˜๊ฐ€ ๋งค์šฐ ํด ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ฌธ์ž์—ด ํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์˜ˆ) ๋งŒ์•ฝ X = 5123, Y = 81530 ์ด๋ผ๋ฉด ์ง๊ฟ = [5, 1, 3]
๋ฐ˜ํ™˜๊ฐ’ : ์ตœ๋Œ€ ํฐ ๊ฐ’์˜ ๋ฌธ์ž์—ด( "531" )

์ ‘๊ทผ ๋ฐฉ๋ฒ•

์šฐ์„  ๋‘ ์ˆ˜์˜ ๊ฐ๊ฐ์˜ ์ž๋ฆฌ์ˆ˜๋ฅผ ๋น„๊ตํ•˜๊ธฐ ์œ„ํ•ด ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  ""์„ ๊ธฐ์ค€์œผ๋กœ ๋‚˜๋ˆˆ ํ›„ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜์˜€๋‹ค.
(์ตœ์ข…์ ์œผ๋ก  ๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ๋จผ์ € ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ)
const xArr = X.toString().split("").sort((a, b) => b - a);
const yArr = Y.toString().split("").sort((a, b) => b - a);โ€‹

์˜ˆ) XArr = [5, 3, 2, 1], YArr = [8, 5, 3, 1, 0] 


๋‹ค์Œ์œผ๋กœ sliding window๋ฐฉ์‹์œผ๋กœ ๋‘ ์ˆ˜๋ฅผ ๋น„๊ตํ•˜์˜€๋‹ค.

while(xIndex < xArr.length && yIndex !== yArr.length){
    if(xArr[xIndex] > yArr[yIndex]) xIndex++;
    else if(xArr[xIndex] < yArr[yIndex]) yIndex++;
    else{
        answer += xArr[xIndex];
        xIndex++;
        yIndex++;
    } 
}



๋งˆ์ง€๋ง‰์œผ๋กœ ๊ตฌํ•œ ๊ฐ’์˜ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ์ง„ํ–‰ํ•˜์˜€๋‹ค.

if(!answer) return "-1";
    
return Number(answer) === 0 ? "0" : answer;

answer = "" ์ด๋ฉด '-1' ๋ฐ˜ํ™˜
answer = "0000" ์ฒ˜๋Ÿผ 0์œผ๋กœ๋งŒ ๊ตฌ์„ฑ๋œ ๊ฒฝ์šฐ Number(answer) === 0 ์ธ ๊ฒฝ์šฐ "0" ๋ฐ˜ํ™˜

 

function solution(X, Y) {
    var answer = '';
    let xIndex = 0;
    let yIndex = 0;
    const xArr = X.toString().split("").sort((a, b) => b - a);
    const yArr = Y.toString().split("").sort((a, b) => b - a);

    while(xIndex < xArr.length && yIndex !== yArr.length){
        if(xArr[xIndex] > yArr[yIndex]) xIndex++;
        else if(xArr[xIndex] < yArr[yIndex]) yIndex++;
        else{
            answer += xArr[xIndex];
            xIndex++;
            yIndex++;
        } 
    }

    if(!answer) return "-1";
    
    return Number(answer) === 0 ? "0" : answer;
}