저번에 풀었는데, 런타임에러나서 질문을 올렸었다.

 

근데 리턴값 안줘서 그런것같다고 그랬다.... 그래서 리턴값 모두 설정해줬더니 됐다.....

그리고 다른사람들이 풀어놓은거 보니깐. 굉장히 sort함수 써서 잘했던데 나는 몰랐다. 

나는 멍청이다. 소팅함수를 구현했다고 보면된다......

#include<iostream>
#include<string>

using namespace std;

string arr[20001];

void initialize(int input) {
	for (int i = 0; i < input; i++) {
		arr[i] = "";
	}
}

void push_back(int start, int end) {
	for (int i = end-1; i >= start; i--) {
		arr[i + 1] = arr[i];
	}
}

bool insert_sort(string input, int num) {
	for (int i = 0; i < num; i++) {
		if (arr[i] == input) {
			return false;
		}
		if (arr[i].length() > input.length()) { //뒤로 미뤄줘야한다.
			push_back(i, num);
			arr[i] = input;
			return true;
		}
		else if (arr[i].length() == input.length()) { //길이가 같다면, 사전순으로 비교
			for (int j = 0; j < input.length(); j++) {
				if (int(arr[i][j]) > int(input[j])) { //입력이 앞설때
					push_back(i, num);
					arr[i] = input;
					return true;
				}
				else if (arr[i][j] < input[j]) {
					break;
				}
			}
		}
	}
	arr[num] = input;
    return true;
}

int main(void) {
	cin.tie(NULL);
	cout.tie(NULL);
	ios_base :: sync_with_stdio(false);
	int T;
	string str;
	cin >> T;
	initialize(T);
	cin >> str;
	arr[0] = str;
	for(int i=1;i<T;i++){
		cin >> str;
		if (insert_sort(str, i) == false) {
			i--;
			T--;
			continue;
		}
	}

	for (int j = 0; j < T; j++) {
		cout << arr[j] << "\n";
	}
    return 0;
}

+ Recent posts