Algorithm/Cases-BOJ
문자열 정렬
Xi_kor
2020. 7. 14. 18:58
문제
n개의 문자열이 주어질 때, 이 문자열을 사전순으로 빠른 순서대로 정렬하는 프로그램을 작성하시오.
입력
첫 번째 줄에 문자열의 개수 n이 주어진다 ( 1 ≤ n ≤ 100 ) 그 후 n개의 줄에 대하여 정렬하고자 하는 문자열이 주어진다 ( 1 ≤ 문자열의 길이 ≤ 100 )
출력
문자열을 사전순으로 빠른 순서대로 정렬한 결과를 출력한다.
예제 입력
9
acid
apple
banana
acquire
cat
crop
crab
power
cat
예제 출력
acid
acquire
apple
banana
cat
cat
crab
crop
power
------------------------------------------------------------------------------------------------------------------------------
문자열을 2차원 배열에 저장을 해놓고, 선택정렬을 해서 구하는 방식으로 사용했다. 선택정렬에서 두 값을 비교하는 함수는 strcmp를 사용했고, 위치를 변경할 때는 temp라는 문자형 배열을 선언한 뒤에 strcpy 함수를 통해 위치를 변경해주었다.
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char arr[105][105];
int n;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
for (int i = 0; i < n; i++) {
int inx = i;
for (int j = i; j < n; j++) {
if (strcmp(arr[inx], arr[j]) > 0) {
inx = j;
}
}
char temp[105];
strcpy(temp, arr[i]);
strcpy(arr[i], arr[inx]);
strcpy(arr[inx], temp);
}
for (int i = 0; i < n; i++) {
cout << arr[i] << endl;
}
return 0;
}