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()๊ฐ ์ฑ๋ฅ์์ผ๋ก ๋ ์ข๋ค๊ณ ํ๋๋ฐ ๋น์ฅ ์ฐพ์๋ดค์๋๋ ์ ์๋ฏธํ๊ฒ ์ฐจ์ด๊ฐ ๋์ง ์๋ ๊ฒ ๊ฐ๊ณ , ๋ค๋ง ์๋ํ๋ ๋ฐฉ์์์์ ์ฐจ์ด์ ์ ์์งํด ๋๋ฉด ์ข์ ๊ฒ ๊ฐ์๋ค.
'๊ฐ๋ฐ > ์ฝ๋ฉํ ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Lv1] 2022์นด์นด์ค > ์ฑ๊ฒฉ์ ํ ๊ฒ์ฌํ๊ธฐ (0) | 2022.08.23 |
|---|---|
| [Lv1] ํ์๋ฒ(Greedy) > ์ฒด์ก๋ณต (0) | 2022.08.16 |