728x90

 0. [c++] 백준


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


 1. 풀이




 2. 소스코드


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
 
using namespace std;
 
int N, K;
vector<string> arr[1001];
 
int main() {
    cin >> N;
    string temp;
    for (int i = 0; i < N; i++) {
        cin >> K;
        for (int j = 0; j < K; j++) {
            cin >> temp;
            arr[i].push_back(temp);
        }
    }
 
    sort(arr, arr + N);
    
    vector<string> stack;
    for (int i = 0; i < N; i++) {
        //이번 문자 벡터에서 이전 벡터와 공통부분을 찾는다.
        int count = 0;
        for (int j = 0; j < arr[i].size() && j < stack.size(); j++) {
            if (arr[i][j] == stack[j])
                count++;
            else
                break;
        }
        //공통부분을 제외하고 모두 제거한다.
        int size = stack.size();
        for(int j=count;j<size;j++)
            stack.pop_back();
        
        for (int j = count; j < arr[i].size(); j++) {
            for (int k = 0; k < stack.size(); k++)
                cout << "--";
            cout << arr[i][j] << "\n";
            stack.push_back(arr[i][j]);
        }
    }
 
    return 0;
}
cs


 3. 참고




질문이나 지적 있으시면 댓글로 남겨주세요~

도움 되셨으면 하트 꾹!


+ Recent posts