programmers.co.kr/learn/courses/30/lessons/12915
코딩테스트 연습 - 문자열 내 마음대로 정렬하기
문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱
programmers.co.kr
- 간단히 char 를 int로 생각하여 비교하면 될 문제지만
- 만약 같다면 사전순으로 정리하는 문제이다.
- 사전순으로 정리하는 것에서 조건을 정확히하면 쉽게 풀 수 있다.
더보기
#include <string>
#include <vector>
#include <iostream>
using namespace std;
vector<string> solution(vector<string> strings, int n) {
vector<string> answer;
for (int lhs = 0; lhs < strings.size(); lhs++)
{
for (int rhs = lhs+1; rhs < strings.size(); rhs++)
{
if (lhs == rhs)
continue;
const int lhsCh = strings[lhs][n];
const int rhsCh = strings[rhs][n];
if (lhsCh > rhsCh)
{
string temp = strings[lhs];
strings[lhs] = strings[rhs];
strings[rhs] = temp;
}
else if (lhsCh == rhsCh)
{
const int size = strings[lhs].size() > strings[rhs].size()
? strings[lhs].size() : strings[rhs].size();
for (int idx = 0; idx < size; idx++)
{
if (strings[lhs][idx] > strings[rhs][idx])
{
string temp = strings[lhs];
strings[lhs] = strings[rhs];
strings[rhs] = temp;
break;
}
else if (strings[lhs][idx] == strings[rhs][idx])
continue;
else
break;
}
}
}
}
answer = strings;
return answer;
}
int main()
{
vector<string> strings = { "aen", "bed", "car" };
int n = 1;
vector<string> answer = solution(strings, n);
for (string ans : answer)
{
std::cout << ans << std::endl;
}
return 0;
}
'Coding Problem > 프로그래머스' 카테고리의 다른 글
[프로그래머스/Lv1] - 키패드 누르기 (카카오) (0) | 2021.05.28 |
---|---|
[프로그래머스/Lv1] - 소수 찾기 (0) | 2021.05.01 |
[프로그래머스/Lv1] - 나누어 떨어지는 숫자 배열 (0) | 2021.04.29 |
[프로그래머스/Lv1] - 수박수박수박수박수박수? (0) | 2021.04.29 |
[프로그래머스/Lv1] - 예산 (0) | 2021.04.25 |