728x90
https://www.acmicpc.net/problem/11656
문제
접미사 배열은 문자열 S의 모든 접미사를 사전순으로 정렬해 놓은 배열이다.
baekjoon의 접미사는 baekjoon, aekjoon, ekjoon, kjoon, joon, oon, on, n 으로 총 8가지가 있고, 이를 사전순으로 정렬하면, aekjoon, baekjoon, ekjoon, joon, kjoon, n, on, oon이 된다.
문자열 S가 주어졌을 때, 모든 접미사를 사전순으로 정렬한 다음 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000보다 작거나 같다.
출력
첫째 줄부터 S의 접미사를 사전순으로 한 줄에 하나씩 출력한다.
예제 입출력
입력 | 출력 |
aekjoon baekjoon ekjoon joon kjoon n on oon | aekjoon baekjoon ekjoon joon kjoon n on oon |
풀이[node.js]
728x90
이번 문제 또한 간단한 문제였지만, join할 때마다 trim을 붙여주지 않아 출력형식이 잘못되었다는 오류가 나왔다.
c++이 아닌 node.js로는 이런 문제가 계속 나온다.. :(
아무튼, 문제 자체는 간단하다.
input값을 stack에 넣어준 후, stack에서 pop()으로 값을 꺼내서, 해당 값을 tmp 앞에 차근차근 넣어준다.
그 후에, tmp값을 join으로 붙여서 answer에 넣어준다.
answer를 sort함수를 사용하여 사전식으로 정렬한 후, 개행문자 기준으로 join해서 출력해주면 된다.
var fs = require('fs');
var input = fs.readFileSync('/dev/stdin').toString().split('');
var stack = [...input];
var answer = [];
var tmp = [];
for(var i=0; i<input.length; i++){
tmp.unshift(stack.pop());
answer.push(tmp.join('').trim());
}
console.log(answer.sort().join('\n').trim());
728x90
'알고리즘 스터디 > 백준 알고리즘 기초 1' 카테고리의 다른 글
[백준 11655번 ROT 13 - node.js] [알고리즘 기초 1/2] (0) | 2021.07.30 |
---|---|
[백준 10809번 알파벳 찾기 - node.js] [알고리즘 기초 1/2] (4) | 2021.07.30 |
[백준 10824번 네 수- node.js] [알고리즘 기초 1/2] (0) | 2021.07.30 |
[백준 10820번 문자열 분석 - node.js] [알고리즘 기초 1/2] (0) | 2021.07.29 |
[백준 2743번 단어 길이 재기 - node.js] [알고리즘 기초 1/2] (0) | 2021.07.29 |
댓글