알고리즘/BOJ

백준 1431번 시리얼 번호

꾸준함. 2019. 1. 3. 03:16

문제 링크입니다: https://www.acmicpc.net/problem/1431


algorithm 헤더의 sort() 메소드를 적절히 사용하면 쉽게 풀 수 있는 문제였습니다.

간혹 invalid comparator 에러가 뜰 수 있는데 이유는 잘 모르겠습니다.


#include <iostream>

#include <vector>

#include <string>

#include <algorithm>

using namespace std;

 

int sum(string s)

{

        int result = 0;

        for (int i = 0; i < s.length(); i++)

                 if ((s[i] - '0') >= 1 && (s[i] - '0') <= 9)

                         result += (s[i] - '0');

        return result;

}

 

bool cmp(string a, string b)

{

        //1번 조건

        if (a.length() != b.length())

                 return a.length() < b.length();

        else

        {

                 int aSum = sum(a);

                 int bSum = sum(b);

 

                 //2번 조건

                 if (aSum != bSum)

                         return aSum < bSum;

                 //3번 조건

                 else

                         return a < b;

        }

}

 

int main(void)

{

        ios_base::sync_with_stdio(0);

        cin.tie(0);

        int N;

        cin >> N;

 

        vector<string> v(N);

        for (int i = 0; i < N; i++)

                 cin >> v[i];

 

        sort(v.begin(), v.end(), cmp);

        for (int i = 0; i < N; i++)

                 cout << v[i] << "\n";

        return 0;

}


개발환경:Visual Studio 2017


지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

반응형

'알고리즘 > BOJ' 카테고리의 다른 글

백준 2740번 행렬 곱셈  (0) 2019.01.03
백준 1072번 게임  (0) 2019.01.03
백준 11944번 NN  (0) 2018.12.30
백준 16466번 콘서트  (0) 2018.12.30
백준 11651번 좌표 정렬하기 2  (0) 2018.12.30