๐ŸŒ  ๋ฌธ์ œ ์„ค๋ช…


๋„ค์˜ค์™€ ํ”„๋กœ๋„๊ฐ€ ์ˆซ์ž๋†€์ด๋ฅผ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋„ค์˜ค๊ฐ€ ํ”„๋กœ๋„์—๊ฒŒ ์ˆซ์ž๋ฅผ ๊ฑด๋„ฌ ๋•Œ ์ผ๋ถ€ ์ž๋ฆฟ์ˆ˜๋ฅผ ์˜๋‹จ์–ด๋กœ ๋ฐ”๊พผ ์นด๋“œ๋ฅผ ๊ฑด๋„ค์ฃผ๋ฉด ํ”„๋กœ๋„๋Š” ์›๋ž˜ ์ˆซ์ž๋ฅผ ์ฐพ๋Š” ๊ฒŒ์ž„์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ์ˆซ์ž์˜ ์ผ๋ถ€ ์ž๋ฆฟ์ˆ˜๋ฅผ ์˜๋‹จ์–ด๋กœ ๋ฐ”๊พธ๋Š” ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

1478 → "one4seveneight"
234567 → "23four5six7"
10203 → "1zerotwozero3"
์ด๋ ‡๊ฒŒ ์ˆซ์ž์˜ ์ผ๋ถ€ ์ž๋ฆฟ์ˆ˜๊ฐ€ ์˜๋‹จ์–ด๋กœ ๋ฐ”๋€Œ์–ด์กŒ๊ฑฐ๋‚˜, ํ˜น์€ ๋ฐ”๋€Œ์ง€ ์•Š๊ณ  ๊ทธ๋Œ€๋กœ์ธ ๋ฌธ์ž์—ด s๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. s๊ฐ€ ์˜๋ฏธํ•˜๋Š” ์›๋ž˜ ์ˆซ์ž๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

์ฐธ๊ณ ๋กœ ๊ฐ ์ˆซ์ž์— ๋Œ€์‘๋˜๋Š” ์˜๋‹จ์–ด๋Š” ๋‹ค์Œ ํ‘œ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ˆซ์ž ์˜๋‹จ์–ด
0 zero
1 one
2 two
3 three
4 four
5 five
6 six
7 seven
8 eight
9 nine

๐ŸŒ  ์ œํ•œ์‚ฌํ•ญ

  • 1 ≤ s์˜ ๊ธธ์ด ≤ 50
  • s๊ฐ€ "zero" ๋˜๋Š” "0"์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ์ฃผ์–ด์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • return ๊ฐ’์ด 1 ์ด์ƒ 2,000,000,000 ์ดํ•˜์˜ ์ •์ˆ˜๊ฐ€ ๋˜๋Š” ์˜ฌ๋ฐ”๋ฅธ ์ž…๋ ฅ๋งŒ s๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.

๐ŸŒ  ์ž…์ถœ๋ ฅ ์˜ˆ

s result
one4seveneight 1478
23four5six7 234567
2three45sixseven 234567
123 123

๐ŸŒ  ์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์ž…์ถœ๋ ฅ ์˜ˆ #1

  • ๋ฌธ์ œ ์˜ˆ์‹œ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค

์ž…์ถœ๋ ฅ ์˜ˆ #2

  • ๋ฌธ์ œ ์˜ˆ์‹œ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค

์ž…์ถœ๋ ฅ ์˜ˆ #3

  • "three"๋Š” 3, "six"๋Š” 6, "seven"์€ 7์— ๋Œ€์‘๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ •๋‹ต์€ ์ž…์ถœ๋ ฅ ์˜ˆ #2์™€ ๊ฐ™์€ 234567์ด ๋ฉ๋‹ˆ๋‹ค.
    ์ž…์ถœ๋ ฅ ์˜ˆ #2์™€ #3๊ณผ ๊ฐ™์ด ๊ฐ™์€ ์ •๋‹ต์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฌธ์ž์—ด์ด ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #4

  • s์—๋Š” ์˜๋‹จ์–ด๋กœ ๋ฐ”๋€ ๋ถ€๋ถ„์ด ์—†์Šต๋‹ˆ๋‹ค.

๐Ÿงž ํ’€์ด

function solution(s) {
    const numberWords = {
        "zero": 0,
        "one": 1,
        "two": 2,
        "three": 3,
        "four": 4,
        "five": 5,
        "six": 6,
        "seven": 7,
        "eight": 8,
        "nine": 9
    };
    let answer = [];
    let arr = s.split("");
    let temp = [];
        for (let e of arr) {
        if (!isNaN(e)) {
            answer.push(+e);
            temp = [];
        } else {
            temp.push(e);
            let word = temp.join("");
            if (numberWords[word] !== undefined) {
                answer.push(numberWords[word]);
                temp = [];
            }
        }
    }
    
    return Number(answer.join(""));
}

๐Ÿ’ก ์•Œ๊ฒŒ ๋œ ์ 

  • ๊ฐ์ฒด (Object) ์ž๋ฃŒํ˜•์€ {"์†์„ฑ": "๊ฐ’"...} ์˜ ํ˜•ํƒœ๋กœ ๋˜์–ด ์žˆ๋‹ค.
  • NaN (Not a Number)๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๊ฐ’์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.
  • ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์—†๋Š” ๊ฐ’์„ ์—ฐ์‚ฐํ•  ๋•Œ 'NaN'์ด ๊ฒฐ๊ณผ๋กœ ๋‚˜์˜ค๋Š” ๊ฒƒ์ด๋‹ค.
  • NaN์€ ์ž์‹ ๊ณผ๋„ ๊ฐ™์ง€ ์•Š๋‹ค.
  • NaN์€ Boolean ์ปจํ…์ŠคํŠธ์—์„œ false๋กœ ํ‰๊ฐ€๋œ๋‹ค.
  • isNaN ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋ฌธ์ž์—ด์ธ์ง€, ์ˆซ์ž๊ฐ€ ๋ฌธ์ž์—ดํ™”๋œ๊ฑด์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ฐ์ฒด[์†์„ฑ]์„ ํ†ตํ•ด ๊ฐ์ฒด ์•ˆ ์†์„ฑ์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ณ ,
  • object[key] !== undefined๋ฅผ ํ†ตํ•ด, ๊ฐ์ฒด ์•ˆ์— ํ•ด๋‹น ์†์„ฑ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

+ Recent posts