• [ 백준_17413 ] 단어 뒤집기 2 ( by using Javascript )

    2021. 4. 1.

    by. KimBangg

    문제

    접근법

    기존에 단어 뒤집기에 이은 후속작이다.

     

    이번은 저번과 다르게 1개의 문자열을 뒤집어 주는 것을 목표로 하는데, 단 < > 안에 들어 있는 내용은 뒤집지 않는다.

     

    그렇기 때문에, isTag 라는 플래그를 사용하여 문제를 해결 하였다.

     

    1. 

    "<"  앞에 단어가 있는 경우는 태그 바깥에 있는 문자열이 존재하는 것이기에, 뒤집은 다음에 <를 추가해준다.

     

    2. 

    띄어쓰기를 사용하는 경우에도, isTag === False 라면  즉, 태그가 닫혀 있는 경우라면 태그 바깥에 존재하는 경우이기에 이를 반대로 출력 해준다.

     

    3. 

    마지막으로 < > 다음이 아닌 어떤 상황에서 나온 단어도 태그 바깥에 존재하기에 뒤집어서 출력 해야한다.

     

    코드

    let input = require("fs").readFileSync("/dev/stdin", "utf8"),
      temp = "",
      isTag = false,
      ans = "";
    
    for (let a of input) {
      if (a === "<") {
        isTag = true;
        ans += temp.split("").reverse.join("") + a;
        temp = "";
      } else if (a === ">") {
        isTag = false;
        ans += temp + a;
        temp = "";
      } else if (a === " ") {
        ans += (!isTag ? temp.split("").reverse().join("") : temp) + " ";
        temp = "";
      } else {
        temp += a;
      }
    }
    
    console.log((ans + temp.split("").reverse().join("")).replace(/\n/g, ""));
    

     

     

    문제를 풀면서 배우고 느낀점

     

    문제를 풀면서 배운 점은, 하나의 문자열을 검색 할 때도 Array.from 을 사용하는 방식과 같이 문자열을 나누어 검사를 진행 하였는데,

    위에서 작성한 코드와 같은 방식으로 처리 할 수 있음을 배울 수 있었다.

     

    자바스크립트가 불편하고 좋지가 않은 알고리즘 언어라고만 생각했는데, 익숙해짐에 따라 보이는 장점도 있는 것 같다 :D

    댓글