문제 풀이/문제 풀이(BOJ)

문제: [Silver V] 22232번 - 가희와 파일 탐색기

풀뿌리 2024. 8. 1. 02:41

[문제 위치]

https://www.acmicpc.net/problem/22232

[문제 풀이]

이 문제는 가희와 파일 탐색기를 구현하는 문제입니다. 문제의 주요 내용은 파일 및 폴더를 이름순, 확장자순으로 정렬하는 것입니다. 이때, 각 파일의 이름과 확장자는 입력된 문자열에서 마지막 "."을 기준으로 나누어집니다. 여기서 사용한 알고리즘의 개요는 다음과 같습니다:

 

1. 파일 또는 폴더명을 입력받습니다.

2. 이름과 확장자를 분리하여 각각 리스트에 저장합니다.

3. 확장자와 이름을 기준으로 정렬합니다.

4. 정렬된 결과를 출력합니다.

 

아래가 그 코드입니다:

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>

using namespace std;

struct File {
    string name;
    string extension;
};

bool compare(File a, File b) {
    if (a.extension == b.extension) return a.name < b.name;
    return a.extension < b.extension;
}

int main() {
    int N;
    cin >> N;
    vector files(N);

    for (int i = 0; i < N; ++i) {
        string input;
        cin >> input;
        size_t pos = input.rfind('.');
        files[i].name = input.substr(0, pos);
        files[i].extension = input.substr(pos + 1);
    }

    sort(files.begin(), files.end(), compare);

    for (const auto &file : files) {
        cout << file.name << '.' << file.extension << '\n';
    }

    return 0;
}