본문 바로가기
Baekjoon/[Code.plus] 알고리즘 기초 1/2

[BOJ/백준] 11656 접미사 배열

by 해적거북 2021. 7. 27.
728x90

● [문제번호 11656] 접미사 배열

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

 

11656번: 접미사 배열

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

www.acmicpc.net

 

● 알아야 할 것

: vector 자료구조와 메소드

 

● 풀이 과정

: 문자열을 입력 받고 문자열을 앞에서 한글자씩 옮기면서 나머지 문자열을 vector에 저장한다
예를 들어 backjoon
v[0] = backjoon
v[1] = ackjoon
v[2] = ckjoon
v[3] = kjoon ..

그다음 정렬 후 출력하면 된다.

 

● 주의 할 것

: vector 정렬 시

sort(vector.begin( ), vector.end( ));

// sort(vector, vector + num) 이 아니다.

 

● 참고 할 것

: NULL

 

● 풀이 코드

#include <bits/stdc++.h>

using namespace std;

// 각 자른 문자열을 저장할 vector
vector<string> v;
// 초기 입력받을 string
string str;

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    
    cin >> str;
    
    v.assign(str.length(), "");
    
    // 문자열을 앞에서 한글자씩 옮기면서 나머지 문자열을 vector에 저장한다
    // 예를 들어 backjoon
    // v[0] = backjoon
    // v[1] = ackjoon
    // v[2] = ckjoon
    // v[3] = kjoon ..
    for(int s = 0; s < str.length(); s++)
        v[s] = str.substr(s, str.length());
    
    // 문자열 사전 순으로 정렬
    // sort(v, v + str.length()) 와 같이 사용 X
    sort(v.begin(), v.end());
    
    // vector의 각 원소 출력
    for(auto el : v)
        cout << el << "\n";
    
    return 0;
}

 

 

● [백준] - [알고리즘 기초 1/2] - [203 - 자료구조 1 (참고)] 문제집

번호 문제 번호 문제 이름 풀이 링크
1 1935 후위 표기식2 https://pirateturtle.tistory.com/170
2 1918 후위 표기식 https://pirateturtle.tistory.com/171
3 10808 알파벳 개수 https://pirateturtle.tistory.com/172
4 10809 알파벳 찾기 https://pirateturtle.tistory.com/173
5 10820 문자열 분석 https://pirateturtle.tistory.com/174
6 2743 단어 길이 재기 https://pirateturtle.tistory.com/175
7 11655 ROT13 https://pirateturtle.tistory.com/176
8 10824 네 수 https://pirateturtle.tistory.com/177
9 11656 접미사 배열 https://pirateturtle.tistory.com/178

 

728x90

댓글