알고리즘 풀이

[JAVASCRIPT] 백준 17413번 문제 풀이

Lv1_junior_dev 2023. 4. 20. 21:51

❗ 풀이

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

let isTag = false;
let result = '';
let currentWord = '';

for (let i = 0; i < input.length; i++) {
    const char = input[i];

    if (char === '<') {
        isTag = true;
        result += currentWord.split('').reverse().join('') + '<';
        currentWord = '';
    } else if (char === '>') {
        isTag = false;
        result += '>';
    } else if (isTag) {
        result += char;
    } else {
        if (char === ' ') {
            result += currentWord.split('').reverse().join('') + ' ';
            currentWord = '';
        } else {
            currentWord += char;
        }
    }
}

result += currentWord.split('').reverse().join('');

console.log(result);
  1. char 변수가 '<' 일 때, isTag 값을 true로 바꾸고, 현재까지 만든 문자열 currentWord를 역순으로 뒤집어서 result에 추가하고 currentWord 변수를 빈 문자열로 초기화
  2. char 변수가 '>' 일 때, isTag 값을 false로 변경 후 태그 내부의 문자열이므로 그대로 result에 추가
  3. isTag 값이 true일 때는 태그 내부이므로 result에 그대로 char를 추가
  4. isTag 값이 false일 때는 태그 외부이므로, currentWord에 char를 추가
  5. char가 공백일 때는 현재까지 만든 문자열을 역순으로 뒤집어서 result에 추가하고, currentWord 변수를 빈 문자열로 초기화
  6. 태그가 닫히지 않은 경우엔 반복문이 끝나고 currentWord를 역순으로 뒤집어서 result에 추가
  7. result 변수에 저장된 문자열을 출력