๐ŸŽฒ ๋ฐฑ์ค€ 17413๋ฒˆ ๋‹จ์–ด ๋’ค์ง‘๊ธฐ 2

Jeongeunยท2023๋…„ 5์›” 4์ผ
0

๋ฐฑ์ค€

๋ชฉ๋ก ๋ณด๊ธฐ
57/188

๋ฐฑ์ค€ 17413๋ฒˆ

์ฝ”๋“œ

๐Ÿ’Š ์ฒ˜์Œ์— findWord ํ•จ์ˆ˜์—์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๋”๋‹ˆ ๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ณผ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

    let word = [...input].splice(start, end - start + 1).reverse();
    for (let i = 0; i < word.length; i++) {
      input[start + i] = word[i];
    }

๐Ÿ’Š ๋‹ค๋ฅธ ๋ถ„๋“ค์˜ ์ฝ”๋“œ๋ฅผ ๋ณด๋‹ˆ tagํŒ๋ณ„ ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, ์ •๊ทœ์‹์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ๋‹ค.

const fs = require('fs'); 
const input = fs.readFileSync('/dev/stdin').toString().trim().split('');

const findWord = (start) => {
  let end = start + 1;
  while (
    input[end] !== "<" &&
    input[end] !== " " &&
    end !== input.length
  ) {
    end++;
  }
  end = end - 1;

  for (let i = 0; i < Math.floor((end - start + 1) / 2); i++) {
    const temp = input[start + i];
    input[start + i] = input[end - i];
    input[end - i] = temp;
  }
  return end;
};

const findEndTag = (start) => {
  let end = start + 1;
  while (input[end] !== ">") {
    end++;
  }
  return end;
};

for (let i = 0; i < input.length; i++) {
  if (input[i] === "<") {
    i = findEndTag(i);
  } else if (input[i] === " ") {
    continue;
  } else {
    i = findWord(i);
  }
}

console.log(input.join(''));

0๊ฐœ์˜ ๋Œ“๊ธ€