티스토리 뷰

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

 

1251번: 단어 나누기

알파벳 소문자로 이루어진 단어를 가지고 아래와 같은 과정을 해 보려고 한다. 먼저 단어에서 임의의 두 부분을 골라서 단어를 쪼갠다. 즉, 주어진 단어를 세 개의 더 작은 단어로 나누는 것이다

www.acmicpc.net


Java와 달리 C++은 substr()에서 두 번째 인자가 몇 개를 가져올 지를 의미한다.

  • Java : [0,2): 0번 인덱스부터 1번 인덱스까지의 문자열을 가져온다.
  • C++ : [0,2) : 0번 인덱스부터 2개의 문자열을 가져온다.
#include <bits/stdc++.h>

using namespace std;

int main() {
    string str;
    getline(cin, str);

    vector<string> v;
    int n = str.length();
    int idx1 = 1, idx2 = 1;
    for (int j = 1; j < n - 1; j++) {
        for (int k = j + 1; k < n; k++) {
            string s1 = str.substr(0, idx1);
            string s2 = str.substr(j, idx2);
            string s3 = str.substr(k);
            idx2++;

            reverse(s1.begin(), s1.end());
            reverse(s2.begin(), s2.end());
            reverse(s3.begin(), s3.end());

            v.push_back(s1 + s2 + s3);
        }
        idx1++;
        idx2 = 1;
    }

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

    cout << v[0];
}
Total
Today
Yesterday
최근에 올라온 글
«   2024/11   »
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