본문 바로가기
프로그래머스

[프로그래머스] 연습문제 - 문자열 내 마음대로 정렬하기, C++

by 황인태(intaehwang) 2020. 1. 6.
반응형

https://programmers.co.kr/learn/courses/30/lessons/12915

 

코딩테스트 연습 - 문자열 내 마음대로 정렬하기 | 프로그래머스

문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 [sun, bed, car]이고 n이 1이면 각 단어의 인덱스 1의 문자 u, e, a로 strings를 정렬합니다. 제한 조건 strings는 길이 1 이상, 50이하인 배열입니다. strings의 원소는 소문자 알파벳으로 이루어져 있습니다. strings의 원소는 길이 1 이상, 100이하인

programmers.co.kr

 본 문제는 sort와 cmp를 연습하는 문제다. 프로그래머스 LEVEL 1, 2는 C++ STL을 연습할 수 있는 문제가 많아서 좋다. sort 사용에 대해 잠깐 소개하면

  • 오름차순 - sort(v.begin(), v.end());
  • 내림차순 - sort(v.rbegin(), v.rend());
  • 기타 - sort(v.begin(), v.end(), cmp); 가 있다.

여기서 v.begin(), v.end()는 vector v의 시작 주소와, 끝 주소를 뜻한다.  다음은 코딩 순서다.

  1. 2번째 인덱스 값 비교하기
  2. 2번째 인덱스 값이 동일하다면 사전 순으로 정렬하기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <string>
#include <vector>
#include <algorithm>
 
using namespace std;
 
int k;
bool cmp (string a, string b) {
    if (a[k] != b[k]) return a[k] < b[k];
    else return a < b;
}
 
vector<string> solution(vector<string> strings, int n) {
    k = n;
    sort(strings.begin(), strings.end(), cmp);
    return strings;
}
cs

 

반응형
Buy me a coffeeBuy me a coffee

댓글