방명록
- 백준 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를 통해 정렬해주면? 답이 출력된다.
다음글이 없습니다.이전글이 없습니다.댓글