16719. ZOAC - node.js / javascript

윤상준·2022년 6월 30일
0

BOJ - node.js / javascript

목록 보기
47/55
post-thumbnail

문제

내 코드

let fs = require("fs");
let input = fs.readFileSync("/dev/stdin").toString().trim();

function solution(input) {
  input = input.split("");
  const answer = [];
  let visited = Array(input.length).fill(false);

  function DFS(left, right) {
    if (left === right) return;

    let result = "";
    const minStr = input.slice(left, right).sort()[0];
    const minIdx = input.slice(left, right).indexOf(minStr) + left;
    visited[minIdx] = true;

    for (let i = 0; i < input.length; i++) {
      if (visited[i]) result += input[i];
    }
    answer.push(result);

    DFS(minIdx + 1, right);
    DFS(left, minIdx);
  }

  DFS(0, input.length);

  return answer.join("\n");
}

console.log(solution(input));

깃허브 링크

https://github.com/highjoon/Algorithm/blob/master/BOJ/16719.js

후기

input 길이 만큼의 1차원 배열 visited를 선언한다. (초기값 : false)
visited에 true로 되어있는 값만 출력해나갈 것이다.

처음 찾은 최솟값을 기준으로 오른쪽까지 쭉 돌고
그 다음 왼쪽을 돌면서 값을 출력해나간다.

profile
하고싶은건 많은데 시간이 없다!

0개의 댓글