
문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/12915
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
각 문자열의 n번째 글자를 기준으로 오름차순 정렬하는 문제
이때 n번째 글자가 같으면 문자열을 비교하여 오름차순 정렬
문제 풀이법
처음에는 pair을 통해서 n번째 문자와, strings 상의 인덱스를 찾아서 sort해주었다
그렇게 하면 n번째 문자가 같은 경우를 처리하지 못하였다
sort할 때 필요한 cmp에서 n번째 글자를 알 수 있으면 바로 sort를 적용시켰을텐데, 알 수 없으니 pair를 사용하는 방법을 사용했다
하지만 전역변수를 사용한다면 cmp에서도 n번째 글자를 알 수 있게 된다!
따라서 cmp함수에서 n번째 글자가 같으면 문자열을 비교, 그렇지 않으면 n번째 글자를 비교하여서 정렬을 하도록 하였다
소스 코드
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int num;
bool cmp(string a, string b)
{
if (a[num] == b[num])
return a < b;
else
return a[num] < b[num];
}
vector<string> solution(vector<string> strings, int n) {
num = n;
sort(strings.begin(), strings.end(), cmp);
return strings;
}'Algorithm Study' 카테고리의 다른 글
| [백준] 2577 숫자의 개수 (0) | 2023.01.06 |
|---|---|
| [백준] 10808 알파벳 개수 (0) | 2023.01.06 |
| [프로그래머스] 1단계 - [1차] 비밀지도.cpp (0) | 2023.01.05 |
| [프로그래머스] 1단계 - 예산 (0) | 2023.01.05 |
| [프로그래머스] 1단계 - 3진법 뒤집기 (0) | 2023.01.04 |