STUDY.md
  • 백준 1427번 - 소트인사이드(C/C++)
    2025년 01월 14일 18시 15분 34초에 업로드 된 글입니다.
    작성자: 방세연

     

    sort를 활용한 매우 간단한 문제이지만, 한 글자씩 저장하는 방법에 더 집중해볼 필요가 있다.

     

     

     

     

    문제
    배열을 정렬하는 것은 쉽다. 수가 주어지면, 그 수의 각 자리수를 내림차순으로 정렬해보자.
    
    입력
    첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다.

    핵심은 내림차순으로 정렬한다는 점과, 한 글자씩 배열 혹은 벡터에 입력받은 값을 저장해야 한다는 점이다.

     

     

     

    #include <iostream>
    #include <vector>
    #include <utility>
    #include <algorithm>
    using namespace std;
    
    int main() {
    
    	string input;
    	vector<string> num;
    	
    	cin >> input;
    	for (char i : input)
    	{
    		num.push_back(string(1, i));
    	}
    
    
    	sort(num.rbegin(), num.rend());
    
    	for (string i : num )
    	{
    		cout << i;
    	}
    
    }

     

    답을 저장할 vector 와 입력받은 문자열을 저장할 string 형의 input 변수 하나를 생성했다.

     

     

    	for (char i : input)
    	{
    		num.push_back(string(1, i));
    	}

    이 부분이 중요한데, char 형식도 for문에 ( i : 변수) 와 같은 형태로 사용할 수 있다!!

    즉, 이 부분은 input의 첫 번째 문자부터 순회하며, 마지막 글자가 될 때까지 num 벡터에 1글자씩 i의 값을 넣어주겠다는 말이다.

     

    이때,

    첫 번째 반복: i = 'a', string(1, 'a') → "a" → num.push_back("a").
    두 번째 반복: i = 'b', string(1, 'b') → "b" → num.push_back("b").
    세 번째 반복: i = 'c', string(1, 'c') → "c" → num.push_back("c").

    i는 숫자로 순회하지 않고 input에 넣은 문자열을 받아들인다. 이 점이 조금 신기했다.

     

    마지막으로 sort를 통해 정렬해주면? 답이 출력된다.

     

     

     

     

     

    댓글