https://school.programmers.co.kr/learn/courses/30/lessons/17686
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
구현문제
#include <string>
#include <vector>
#include<algorithm>
#include<iostream>
using namespace std;
//대소문자 구분x
//정렬 조건 h: 오름차순 , n: 숫자로만들어서 오름차순정렬
bool comp(string v, string t) {
int t_size;
if (v.size() > t.size()) {
t_size = t.size();
}
else {
t_size = v.size();
}
for (int idx = 0; idx < t_size; ++idx) {
//대소문자 구분하지 않으면서도 기존 벡터 변형 없게 만들려고
//임시값 ch1, ch2 생성
char ch1 = v[idx];
char ch2 = t[idx];
//header 단계
//idx별 문자가 동일할 때 먼저 숫자에 접근할 경우 true를 리턴해 낮은 은 값 정렬
//둘다 숫자 접근 시 다음 단계인 숫자 비교로 넘어감
if (ch1 >= '0' && ch1 <= '9' && ch2 >= '0' && ch2 <= '9')break;
if (ch1 >= '0' && ch1 <= '9') {
return true;
break;
}
if (ch2 >= '0' && ch2 <= '9') {
return false;
break;
}
if (ch1 >= 'a' && ch1 <= 'z') {
ch1 = 'A' + ch1 - 'a';
}
if (ch2 >= 'a' && ch2 <= 'z') {
ch2 = 'A' + ch2 - 'a';
}
if (ch1 < ch2) return true;
if (ch1 > ch2) return false;
}
// if(v.size() < t.size()) return true;
//if(v.size() > t.size()) return false;
// 숫자형태의 문자열 변수
string vs = "";
string ts = "";
int flag = 0;
int cnt = 0;
//숫자는 5개 제한.
for (int idx = 0; idx < v.size(); ++idx) {
if (v[idx] >= '0' && v[idx] <= '9') {
vs += v[idx];
cnt++;
flag = 1;
}
else {
if (flag == 1) {
break;
}
}
if (cnt >= 5)break;
}
flag = 0;
cnt = 0;
for (int idx = 0; idx < t.size(); ++idx) {
if (t[idx] >= '0' && t[idx] <= '9') {
ts += t[idx];
cnt++;
flag = 1;
}
else {
if (flag == 1) {
break;
}
}
if (cnt >= 5)break;
}
//숫자 비교해서 오름차순 정렬 진행.
int vVal = 0;
int tVal = 0;
vVal = stoi(vs);
tVal = stoi(ts);
if (vVal < tVal)return true;
if (vVal > tVal)return false;
return false;
}
vector<string> solution(vector<string> files) {
stable_sort(files.begin(), files.end(), comp); // sort로 하면 안정적인 정렬이 아니라 함. stable_ 을 넣어야함
vector<string> answer;
for (int y = 0; y < files.size(); ++y) {
for (int x = 0; x < files[y].size(); ++x) {
cout << files[y][x];
}
cout << endl;
}
return files;
}
int main(void) {
solution({ "foo9.txt", "foobar1.txt" });
}'프로그래머스 > 코딩테스트' 카테고리의 다른 글
| lv2) 혼자 놀기의 달인 (1) | 2026.07.06 |
|---|---|
| lv3) 정수 삼각형 (0) | 2026.06.25 |
| lv2 ) 완전범죄(틀림) 그리디 vs DP (0) | 2026.06.19 |
| lv2) 멀리 뛰기 (0) | 2026.06.16 |
| 비트마스킹 관련 연습 (7다) (0) | 2026.06.03 |
