반응형
문제 설명
문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.
제한 조건
- strings는 길이 1 이상, 50이하인 배열입니다.
- strings의 원소는 소문자 알파벳으로 이루어져 있습니다.
- strings의 원소는 길이 1 이상, 100이하인 문자열입니다.
- 모든 strings의 원소의 길이는 n보다 큽니다.
- 인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다.
입출력 예
strings n return
["sun", "bed", "car"] | 1 | ["car", "bed", "sun"] |
["abce", "abcd", "cdx"] | 2 | ["abcd", "abce", "cdx"] |
입출력 예 설명
입출력 예 1
"sun", "bed", "car"의 1번째 인덱스 값은 각각 "u", "e", "a" 입니다. 이를 기준으로 strings를 정렬하면 ["car", "bed", "sun"] 입니다.
입출력 예 2
"abce"와 "abcd", "cdx"의 2번째 인덱스 값은 "c", "c", "x"입니다. 따라서 정렬 후에는 "cdx"가 가장 뒤에 위치합니다. "abce"와 "abcd"는 사전순으로 정렬하면 "abcd"가 우선하므로, 답은 ["abcd", "abce", "cdx"] 입니다.
#include <string>
#include <vector>
using namespace std;
vector<string> solution(vector<string> strings, int n) {
// 사용자 정의 정렬 함수 설정
sort(strings.begin(), strings.end(), [n](const string &a, const string &b) {
// n번째 문자가 다르면 n번째 문자를 기준으로 비교
if (a[n] != b[n]) {
return a[n] < b[n];
}
// n번째 문자가 같으면 사전순으로 비교
return a < b;
});
return strings;
}
몰랐던것
- sort(시작 반복자, 종료 반복자, 비교 함수);
- 람다 함수 [n](const string &a, const string &b) { ... }
- [n]: 캡처(capture) 부분입니다. 캡처는 람다 함수가 외부에서 선언된 변수를 사용할 수 있게 해줍니다. 여기서는 **n**을 캡처하여 람다 함수 내부에서 사용할 수 있게 합니다.
- (const string &a, const string &b): 람다 함수의 매개변수 목록입니다. 여기서는 **const string &a**와 **const string &b**라는 두 개의 string 참조를 매개변수로 받습니다.
- { ... }: 람다 함수의 본문으로, 두 매개변수 **a**와 **b**를 비교하여 true 또는 **false**를 반환합니다. 이 반환값은 sort 함수가 **a**와 **b**의 순서를 결정하는 데 사용합니다.
그냥 배열 []을 쓰지않고 vector를 쓰는 이유는 배열은 정적배열이고, vector는 동적 배열이다 벡터는 크기를 자유자제로 변하게할수있고, 일반 배열은 크기를 바꿀수없다.
vector<int> a;
a.push_back(10); // 벡터에 요소 추가 가능
a.resize(5); // 크기 조절 가능
int arr[5]; // 정적 배열은 크기 변경 불가능
- vector<int>: 다양한 함수(size(), push_back(), pop_back(), erase(), clear(), insert())가 제공되므로 사용이 편리하고 기능이 풍부합니다.
- int[]: 기본적인 인덱스 접근 외에 별도의 메서드가 없습니다. 크기를 확인하려면 **sizeof**를 사용해야 합니다.
반응형
'프로그래머스(코딩테스트 연습)' 카테고리의 다른 글
프로그래머스/C++ 문자열 나누기 (0) | 2025.01.31 |
---|---|
프로그래머스/C++ 크기가 작은 부분문자열 (0) | 2025.01.31 |
프로그래머스/C++ K번째수 (0) | 2025.01.31 |
프로그래머스/C++ 콜차츠 추측 (0) | 2025.01.22 |
프로그래머스/C++ [PCCE 기출문제] 8번 / 창고 정리 (0) | 2024.01.11 |