728x90

문제


https://www.acmicpc.net/problem/11656

 

11656번: 접미사 배열

첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000보다 작거나 같다.

www.acmicpc.net

 

코드


//실버4 접미사 배열
const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
let input = fs.readFileSync(filePath).toString().trim().split("\r\n");

let suffix = []; //접미사들을 담을 배열
input = input.shift(); //배열에 담긴 문자열 빼내기
for (let i = 0; i < input.length; i++) {
  suffix.push(input.slice(i)); //0부터 문자열길이만큼 slice하며 접미사배열에 넣기
}
console.log(suffix.sort().join("\n")); //사전 순으로 정렬 후 개행으로 구분하여 출력

 

후기


  • 처음에는 문자열의 맨 앞부터 제거해나가는 것에 대해 slice함수가 생각이 안나서 문자열을 reverse해서 for문으로 돌려 한글자씩 suffix배열에 저장하며 저장한 걸 또 reverse함수써서 돌려놓고 이런식으로 구현했는데 결과적으로 정답은 맞았지만 다른 분들보다 메모리나 시간이 더 많이 걸렸고, slice함수가 생각나서 구현하니 바로 줄어들었다.

+ Recent posts