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

Lv1_[문자열 내 마음대로 정렬하기, C++] 풀이 및 알고리즘 정리 - 프로그래머스

by 워킹독 2023. 1. 11.
728x90

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제 내용, 조건, 예시는 프로그래머스 사이트 참조


알고리즘

sort를 이용해서 정렬

  • 정렬비교는 custom함수를 통해서 재설정해서 진행
  • 정렬기준 : n번째 글자를 기준으로 오름차순


여기서 정렬비교에 쓰이는 custom함수 위치에
별도함수를 생성, 람다함수 생성 등 비교방법은 어러가지이지만 여기서는 인자값 n이 필요하기 때문에 람다함수를 이용해서 풀어줬음

또한, custom함수 코드량이 적기 때문에 람다함수를 사용해서 풀면 보기 깔끔함)

custom함수에는 다음과 같은 알고리즘 적용

  • n번째 문자가 같으면, 전체 문자 기준으로 오름차순
  • n번째 문자가 다르면, n번째 문자 기준으로 오름차순

 

위와 같이 해주면 해당 문제 풀이는 완료

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <string>
#include <vector>
#include <algorithm>
 
using namespace std;
 
vector<string> solution(vector<string> strings, int n)
{
    vector<string> answer = strings;
    sort(answer.begin(), answer.end(),
            [n](string& str1, string& str2) {
                if (str1[n] == str2[n]) {
                    return (str1 < str2);
                } else {
                    return (str1[n] < str2[n]);
                }
            }
    );
    return answer;
}
cs

 

 

↓↓↓↓↓↓ 유익했다면 하트 뿅 ♥ ↓↓↓↓↓↓

 

 

728x90
반응형

댓글