[Lv1] 2021์นด์นด์˜ค > ์ˆซ์ž ๋ฌธ์ž์—ด๊ณผ ์˜๋‹จ์–ด

2022. 8. 9. 10:44ใ†๊ฐœ๋ฐœ/์ฝ”๋”ฉํ…Œ์ŠคํŠธ

 

 

2021 ์นด์นด์˜ค ์ฑ„์šฉ์—ฐ๊ณ„ํ˜• ์ธํ„ด์‹ญ > ์ˆซ์ž ๋ฌธ์ž์—ด๊ณผ ์˜๋‹จ์–ด

๋‹ค์Œ์€ ์ˆซ์ž์˜ ์ผ๋ถ€ ์ž๋ฆฟ์ˆ˜๋ฅผ ์˜๋‹จ์–ด๋กœ ๋ฐ”๊พธ๋Š” ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.
1478 → "one4seveneight"
234567 → "23four5six7"
10203 → "1zerotwozero3"

 

๋‚ด ๋‹ต๋ณ€

function solution(s) {
    const englishNumbers = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'];
    let result = s;

    englishNumbers.forEach((num, index) => {
        const regex = new RegExp(`${num}`,'g'); // ๐Ÿ‘‰ '`'์—†์ด ๋ฐ”๋กœ ๋ณ€์ˆ˜ ์‚ฌ์šฉ
        result = result.replace(regex, index);
    })

    return parseInt(result, 0); // ๐Ÿ‘‰ parseInt vs Number
}

 

๐Ÿ‘‰ ์ „์ฒด์ ์œผ๋กœ String.prototype.replace์˜ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ O(n)์ด๊ธฐ ๋•Œ๋ฌธ์— O(n^2)์„ ๊ฐ€์ง„ ํ’€์ด๊ฐ€ ๋˜์—ˆ๋‹ค.

 

๐Ÿฅฒ ์•„์‰ฌ์šด ์ 

- regExp๊ฐ์ฒด ์‚ฌ์šฉ์— ์กฐ๊ธˆ ๋ฏธ์ˆ™ํ–ˆ๋‹ค๋Š” ๊ฒƒ

 

๐Ÿ˜† ์ข‹์•˜๋˜ ์ 

- '๋กœ๋˜์˜ ์ตœ๊ณ  ์ˆœ์œ„์™€ ์ตœ์ € ์ˆœ์œ„'์—์„œ ๋ดค๋˜ ๋‹ค๋ฅธ ๋ถ„๋“ค์˜ ํ’€์ด๋ฐฉ์‹์„ ๊ธฐ์–ตํ•ด์„œ switch๋ฌธ ๋Œ€์‹ ์— ๋ฐฐ์—ด๋กœ ์น˜ํ™˜์„ ์‹œ๋„ํ•ด๋ณธ ๊ฒƒ

- ์ „์ฒด์ ์ธ ๋…ผ๋ฆฌ์˜ ํ๋ฆ„์ƒ ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ต๊ฒŒ ํ’€์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ

 

 

๋‹ค๋ฅธ ๋ถ„๋“ค์˜ ํ’€์ด

function solution(s) {
    let numbers = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
    var answer = s;

    for(let i=0; i< numbers.length; i++) {
        let arr = answer.split(numbers[i]);
        answer = arr.join(i);
    }

    return Number(answer);
}

 

๐Ÿ‘‰ ์ „์ฒด์ ์ธ ํ๋ฆ„์€ ๋‚˜์™€ ๋น„์Šทํ•œ๋ฐ replace๋Œ€์‹ ์— ๋ฐฐ์—ด์˜ split()๊ณผ .join()์„ ์‚ฌ์šฉํ•ด์„œ ์น˜ํ™˜์„ ํ•˜์…จ๋‹ค. ์ƒ๊ฐํ•ด๋ณด์ง€ ๋ชปํ•œ ๋ฐฉ๋ฒ•์ด๋ผ์„œ ๊ต‰์žฅํžˆ ์‹ ๊ธฐํ–ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” O(n)์˜ ํ’€์ด์ธ์ค„ ์•Œ์•˜๋Š”๋ฐ, ๊ตฌ๊ธ€๋ง ํ•ด๋ณด๋‹ˆ๊นŒ join()์˜ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ O(n)์ด๋ฏ€๋กœ O(n^2)์˜€๋‹ค.

๋”ฐ๋ผ์„œ ๋‚ด ํ’€์ด์™€ ์„ฑ๋Šฅ์ƒ์˜ ์ฐจ์ด์ ์€ ์—†๊ณ , ๋Œ€์‹ ์— ๋‚ด ํ’€์ด๊ฐ€ ์กฐ๊ธˆ ๋” ์ง๊ด€์ ์ด๋ผ๋ฉด ์ด ๋ถ„์˜ ํ’€์ด๋Š” ์กฐ๊ธˆ ๋” ๊ธฐ๋ฐœํ–ˆ๋‹ค.

 

๐Ÿ‘‰ ๋‚˜๋Š” ๋ฌธ์ž๋ฅผ ์ˆซ์ž๋กœ ๋ฐ”๊พธ๋Š” ๊ฒƒ์— parseInt๋งŒ ์ƒ๊ฐํ–ˆ์—ˆ๋Š”๋ฐ, Number๋ฅผ ์‚ฌ์šฉํ•˜์…”์„œ ์ด ๋‘˜์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๋Œ“๊ธ€์—์„œ๋Š” Number()๊ฐ€ ์„ฑ๋Šฅ์ƒ์œผ๋กœ ๋” ์ข‹๋‹ค๊ณ  ํ–ˆ๋Š”๋ฐ ๋‹น์žฅ ์ฐพ์•„๋ดค์„๋•Œ๋Š” ์œ ์˜๋ฏธํ•˜๊ฒŒ ์ฐจ์ด๊ฐ€ ๋‚˜์ง„ ์•Š๋Š” ๊ฒƒ ๊ฐ™๊ณ , ๋‹ค๋งŒ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์—์„œ์˜ ์ฐจ์ด์ ์„ ์ˆ™์ง€ํ•ด ๋‘๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์•˜๋‹ค.