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()}`;
}
})
);