반응형
문자열 내 마음대로 정렬하기
문제
문제 설명
문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 [sun, bed, car]이고 n이 1이면 각 단어의 인덱스 1의 문자 u, e, a로 strings를 정렬합니다.
제한 조건
- strings는 길이 1 이상, 50이하인 배열입니다.
- strings의 원소는 소문자 알파벳으로 이루어져 있습니다.
- strings의 원소는 길이 1 이상, 100이하인 문자열입니다.
- 모든 strings의 원소의 길이는 n보다 큽니다.
- 인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다.
문제 풀이
alogrithm 라이브러리의 sort() 를 이용하여 문제를 해결했다. mysort라는 비교 함수를 만들어서 N 인덱스의 문자로 정렬하고 만약 그 문자 둘이 같다면 사전순으로 정렬한다.
c++ 코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | #include <string> #include <vector> #include <algorithm> using namespace std; int N; bool mysort(string a, string b){ if(a.at(N)!=b.at(N)){ return a.at(N) < b.at(N); //N인덱스의 문자로 정렬 }else{ return a < b; //사전순으로 정렬 } //return a.at(N)==b.at(N) ? a < b : a.at(N) < b.at(N); } vector<string> solution(vector<string> strings, int n) { vector<string> answer; answer = strings; N = n; sort(answer.begin(),answer.end(),mysort); return answer; } | cs |
반응형
'군대에서 한것 > 프로그래머스' 카테고리의 다른 글
<프로그래머스> Level1 문자열 내림차순으로 배치하기 (0) | 2019.01.18 |
---|---|
<프로그래머스> Level1 서울에서 김서방 찾기 (0) | 2019.01.18 |
<프로그래머스> Level1 나누어 떨어지는 숫자 배열 (0) | 2019.01.18 |
<프로그래머스> Level1 가운데 글자 가져오기 (0) | 2019.01.18 |
<프로그래머스> Level1 체육복 (0) | 2019.01.13 |