<알고리즘 문제풀이&연습>/[C++] 백준, 프로그래머스 등등

[백준 1427] 소트인사이드

BlockDMask 2017. 9. 23. 15:49
반응형
  • 안녕하세요. BlockDMask 입니다.

  • 오늘 문제는 .. 음 쉬운 문제입니다.

  • [C++ reference] 를 설명하기 위해서 찾아서 풀어본 문제입니다.

0. 제목

  • 백준 1427 소트인사이드

  • BOJ 1427 소트인사이드

1. 문제 설명

  • 숫자 N 이 들어오면 내림차순으로 출력하라.

  • N의 범위는 1,000,000,000 보다 작거나 같다.

2. 풀이과정


a) 알고리즘 sort를 이용

STL에서 지원해주는 sort 함수를 이용하여 푼 경우.


b) 직접 bubble sort 구현


3. 코드


a) algorithm 헤더파일에서 지원해주는 sort 함수 이용.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//백준 1427 번 소트인사이드
 
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
 
char arr[10];
int main(void){
 
    cin>>arr;
 
    sort(arr, arr+strlen(arr), greater<int>());
    for(int i=0; i<strlen(arr); i++){
        cout <<arr[i];
    }
 
    return 0;
}
cs


b) 직접 bubble sort 구현하여 이용.

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
49
50
51
52
53
54
//백준 1427 번 소트인사이드
 
#include<iostream>
using namespace std;
 
 
//reference를 이용한 call-by-reference
void Swap(int &num1, int &num2){
    int tmp;
    tmp = num1; //변수 사용하듯 사용하면 됩니다.
    num1 = num2;
    num2 = tmp;
}
 
//BubbleSort
//int *(&arr) : 배열을 reference를 통해서 call by reference 하는 법(= 포인터를 참조자로 참조하는법)
void BubbleSort(int *(&arr),int len){
    for(int i=0; i<len-1; i++){
        for(int j=1; j<len -i; j++){
            if(arr[j] > arr[j-1]){ //내림차순
                Swap(arr[j], arr[j-1]);
            }
        }
    }
}
 
void Solution(string & str){
    int len = (int)str.length();
    int * arr = new int[len]; //동적할당.
 
    //string으로 받은 문자열의 인자를 int type의 배열에 하나씩 넣어줍니다
    for(int i=0; i<len; i++) {
        arr[i] = str[i] -'0';
    }
 
    BubbleSort(arr, len);
 
    for(int i=0; i<len; i++){
        cout << arr[i];
    }
 
    delete []arr;
}
 
 
int main(void){
 
    string str;
 
    cin>>str;
    Solution(str);
 
    return 0;
}
cs


4. 인증


a) algorithm 헤더파일에서 지원해주는 sort 함수 이용.


b) 직접 bubble sort 구현하여 이용.


문제 출처 - http://blockdmask.tistory.com/151

감사합니다. 하트 꾹 부탁드려요!

반응형