치춘짱베리굿나이스

[백준] 1251 본문

단어 나누기

문제

알파벳 소문자로 이루어진 단어를 가지고 아래와 같은 과정을 해 보려고 한다.

먼저 단어에서 임의의 두 부분을 골라서 단어를 쪼갠다. 즉, 주어진 단어를 세 개의 더 작은 단어로 나누는 것이다. 각각은 적어도 길이가 1 이상인 단어여야 한다. 이제 이렇게 나눈 세 개의 작은 단어들을 앞뒤를 뒤집고, 이를 다시 원래의 순서대로 합친다.

예를 들어,

  • 단어 : arrested
  • 세 단어로 나누기 : ar / rest / ed
  • 각각 뒤집기 : ra / tser / de
  • 합치기 : ratserde

단어가 주어지면, 이렇게 만들 수 있는 단어 중에서 사전순으로 가장 앞서는 단어를 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 영어 소문자로 된 단어가 주어진다. 길이는 3 이상 50 이하이다.

출력

첫째 줄에 구하고자 하는 단어를 출력하면 된다.

풀이

const wordDivide = () => {
  let input = require("fs")
    .readFileSync("/dev/stdin")
    .toString()
    .trim()
    .split("");
  const len = input.length;
  let words = [];
  for (let i = 1; i < len - 1; i++) {
    for (let j = i + 1; j < len; j++) {
      words.push(
        input.slice(0, i).reverse().join("") +
          input.slice(i, j).reverse().join("") +
          input.slice(j).reverse().join("")
      );
    }
  }
  console.log(words.sort()[0]);
};

wordDivide();

반성회

모든 인덱스에 대하여 slice를 통해 3등분해주고 그 조각을 뒤집어서 이어붙인 새 단어를 전부 저장한 다음 정렬해서 맨 앞 값만 가져왓다

'Javascript + Typescript > 자바스크립트로 알고리즘풀기' 카테고리의 다른 글

[백준] 2501  (0) 2022.02.14
[백준] 15641 [번외] [자바스크립트아님]  (0) 2022.02.14
[백준] 1059  (0) 2022.02.14
[백준] 1037  (0) 2022.02.14
[백준] 1010  (0) 2022.02.14
Comments