728x90
문제 설명
문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.
코드 설명
난 algorithm에 포함된 함수 sort를 활용하여 간단하게 풀이 하였다.
먼저 num을 전역 변수로 선언해 주었다.
using namespace std;
int num;
입력받은 n을 num에 넣어 주고 sort를 실행하였다.
이번에는 사용자 함수를 사용하여 sort를 사용하였다.
vector<string> answer;
num = n;
sort(strings.begin(), strings.end(), compare);
compare함수를 따로 만들어서 string의 num인덱스 값에 따라 오름차순으로 정렬하게 해주었다.
같은 경우에는 사전 순으로 정렬하게 하였다.
using namespace std;
int num;
bool compare(string a, string b){
if(a[num] != b[num]){
return a[num]<b[num];
}
else return a<b;
}
마무리로 answer에 뒤부터 차곡차곡 쌓아주면 끝!
for(int i = 0; i < strings.size(); i++){
answer.push_back(strings.at(i));
}
전체 코드
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int num;
bool compare(string a, string b){
if(a[num] != b[num]){
return a[num]<b[num];
}
else return a<b;
}
vector<string> solution(vector<string> strings, int n) {
vector<string> answer;
num = n;
sort(strings.begin(), strings.end(), compare);
for(int i = 0; i < strings.size(); i++){
answer.push_back(strings.at(i));
}
return answer;
}
728x90
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
프로그래머스 LV1 C++ 소수찾기 풀이 (0) | 2024.04.16 |
---|---|
프로그래머스 LV1 C++ 문자열 내 p와 y의 개수 풀이 (0) | 2024.04.16 |
프로그래머스 LV1 C++ 두 정수 사이의 합 풀이 (0) | 2024.04.16 |
프로그래머스 C++ LV1 나누어 떨어지는 숫자 배열 풀이 (0) | 2024.04.05 |
프로그래머스 1LV C++ 같은 숫자 싫어 (0) | 2024.03.17 |