백준 17413 / 단어 뒤집기 2 / JS

Jihoo·2021년 9월 15일
0

Algorithm

목록 보기
11/16

https://www.acmicpc.net/problem/17413

문제

문자열 S에서 단어만 뒤집은 문자열을 출력합니다.

구현

문제에서 단어의 조건은 '태그(<>) 바깥에 존재한다'로 이해할 수 있습니다. 저는 정규표현식으로 <로 시작하는 문자열과 > 혹은 태그 없이 시작하는 문자열을 먼저 찾았는데요. <로 시작하면 태그 안에 존재하므로 단어가 아니고, > 혹은 태그 없이 시작하면 태그 바깥에 존재하므로 단어를 의미합니다.

코드

const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
const input = require('fs').readFileSync(filePath).toString().trim();

console.log(
  input.replace(/([<>]?)([a-z0-9\s]+)/g, (m, p1, p2) => {
    if (p1 === '<') {
      return m;
    } else {
      return `${p1}${p2
        .split(' ')
        .map((x) => x.split('').reverse().join(''))
        .join(' ')
        .trim()}`;
    }
  })
);

0개의 댓글