티스토리 뷰

출처 : https://www.hackerrank.com/challenges/bigger-is-greater/problem


#include <bits/stdc++.h>


using namespace std;


string biggerIsGreater(string w) {

string z; int n = w.size();

for (int i = n - 1; i >= 0; i--) {

if (i == 0) return "no answer";

if (w[i] == w[i - 1]) continue;

if (w[i] > w[i - 1]) {

char c; c = w[i]; w[i] = w[i - 1]; w[i - 1] = c;

return w;

}

else {

int j = i-1;

while (j>=0) {

if (w[j] >= w[j + 1]) {

if (j == 0) return "no answer";

j--; continue;

}

else {

char c = w[j];

z = w.substr(j + 1, n - (j + 1));

w.erase(j, n - j);

for (int m = 0; m < z.size(); m++) {

if (z[m] <= c) {

w += z[m - 1]; z[m - 1] = c;

for (int kk = z.size() - 1; kk >= 0; kk--) w += z[kk];

return w;

}

if (m == z.size() - 1) {

w += z[m]; z[m] = c;

for (int kk = z.size() - 1; kk >= 0; kk--) w += z[kk];

return w;

}

}

}

}

}

}

return w;

}


int main()

{

ofstream fout(getenv("OUTPUT_PATH"));


int T;

cin >> T;

cin.ignore(numeric_limits<streamsize>::max(), '\n');


for (int T_itr = 0; T_itr < T; T_itr++) {

string w;

getline(cin, w);


string result = biggerIsGreater(w);


fout << result << "\n";

}


fout.close();


return 0;

}


'알고리즘 > 기타' 카테고리의 다른 글

[HackerRank] The Grid Search  (0) 2018.10.01
[HackerRank] The Time in Words  (0) 2018.10.01
[HackerRank] Organizing Containers of Balls  (0) 2018.10.01
[HackerRank] Queen's Attack II  (0) 2018.09.30
[HackerRank] Encryption  (0) 2018.09.30
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
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
글 보관함