치춘짱베리굿나이스
[백준] 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