Algorithm/๋ฐฑ์ค€(BOJ)

[๋ฐฑ์ค€ / C++] 1431๋ฒˆ: ์‹œ๋ฆฌ์–ผ ๋ฒˆํ˜ธ ํ’€์ด

meeeeejin 2020. 7. 21. 14:54

๋ฌธ์ œ ์„ค๋ช…

 

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

 

1431๋ฒˆ: ์‹œ๋ฆฌ์–ผ ๋ฒˆํ˜ธ

์ฒซ์งธ ์ค„์— ๊ธฐํƒ€์˜ ๊ฐœ์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค. N์€ 1,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์— ์‹œ๋ฆฌ์–ผ ๋ฒˆํ˜ธ๊ฐ€ ํ•˜๋‚˜์”ฉ ์ฃผ์–ด์ง„๋‹ค. ์‹œ๋ฆฌ์–ผ ๋ฒˆํ˜ธ์˜ ๊ธธ์ด๋Š” ์ตœ๋Œ€ 50์ด๊ณ , ์•ŒํŒŒ๋ฒณ ๋Œ€๋ฌธ์ž ๋˜๋Š” ์ˆซ์ž๋กœ๋งŒ ์ด๋ฃจ๏ฟฝ๏ฟฝ

www.acmicpc.net

 

๋‹ค์†œ์ด๋Š” ๊ธฐํƒ€๋ฅผ ๋งŽ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ๊ฐ์˜ ๊ธฐํƒ€๋Š” ๋ชจ๋‘ ๋‹ค๋ฅธ ์‹œ๋ฆฌ์–ผ ๋ฒˆํ˜ธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๋‹ค์†œ์ด๋Š” ๊ธฐํƒ€๋ฅผ ๋นจ๋ฆฌ ์ฐพ์•„์„œ ๋นจ๋ฆฌ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์—ฐ์ฃผํ•ด์ฃผ๊ธฐ ์œ„ํ•ด์„œ ๊ธฐํƒ€๋ฅผ ์‹œ๋ฆฌ์–ผ ๋ฒˆํ˜ธ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌํ•˜๊ณ ์ž ํ•œ๋‹ค.

๋ชจ๋“  ์‹œ๋ฆฌ์–ผ ๋ฒˆํ˜ธ๋Š” ์•ŒํŒŒ๋ฒณ ๋Œ€๋ฌธ์ž (A-Z)์™€ ์ˆซ์ž (0-9)๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

์‹œ๋ฆฌ์–ผ ๋ฒˆํ˜ธ A๊ฐ€ ์‹œ๋ฆฌ์–ผ ๋ฒˆํ˜ธ B์˜ ์•ž์— ์˜ค๋Š” ๊ฒฝ์šฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

  1. A์™€ B์˜ ๊ธธ์ด๊ฐ€ ๋‹ค๋ฅด๋ฉด, ์งง์€ ๊ฒƒ์ด ๋จผ์ € ์˜จ๋‹ค.
  2. ๋งŒ์•ฝ ์„œ๋กœ ๊ธธ์ด๊ฐ€ ๊ฐ™๋‹ค๋ฉด, A์˜ ๋ชจ๋“  ์ž๋ฆฌ์ˆ˜์˜ ํ•ฉ๊ณผ B์˜ ๋ชจ๋“  ์ž๋ฆฌ์ˆ˜์˜ ํ•ฉ์„ ๋น„๊ตํ•ด์„œ ์ž‘์€ ํ•ฉ์„ ๊ฐ€์ง€๋Š” ๊ฒƒ์ด ๋จผ์ €์˜จ๋‹ค. (์ˆซ์ž์ธ ๊ฒƒ๋งŒ ๋”ํ•œ๋‹ค)
  3. ๋งŒ์•ฝ 1,2๋ฒˆ ๋‘˜ ์กฐ๊ฑด์œผ๋กœ๋„ ๋น„๊ตํ•  ์ˆ˜ ์—†์œผ๋ฉด, ์‚ฌ์ „์ˆœ์œผ๋กœ ๋น„๊ตํ•œ๋‹ค. ์ˆซ์ž๊ฐ€ ์•ŒํŒŒ๋ฒณ๋ณด๋‹ค ์‚ฌ์ „์ˆœ์œผ๋กœ ์ž‘๋‹ค.

 

์‹œ๋ฆฌ์–ผ์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ •๋ ฌํ•ด์„œ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

 

 

 

๋ฌธ์ œ ํ’€์ด

 

๋น„๊ต ๊ธฐ์ค€ 1, 2, 3์„ ์ถฉ์กฑํ•˜๋Š” compare ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. 

 

ํ•œ์ž๋ฆฌ ์ˆ˜ ์ •์ˆ˜๋ฅผ ํ‘œํ˜„ํ•˜๋Š” char ์ž๋ฃŒํ˜• ๋ฐ์ดํ„ฐ๋ฅผ int ์ž๋ฃŒํ˜•์œผ๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. 

1
2
3
char c = '9';
int num = c - '0';
cout << num; // 9
cs

๊ฐ„๋‹จํ•˜๊ฒŒ char ์ž๋ฃŒํ˜•์— '0'๋ฅผ ๋นผ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ getSum()์—์„œ ์ด์šฉํ•ด, ์‹œ๋ฆฌ์–ผ ๋ฒˆํ˜ธ์—์„œ ์ˆซ์ž๋งŒ์˜ ํ•ฉ์„ ๊ตฌํ–ˆ์Šต๋‹ˆ๋‹ค. 

์†Œ์Šค ์ฝ”๋“œ ์ฃผ์„์— ๋ฌธ์ œ ํ’€์ด ์ถ”๊ฐ€ ์„ค๋ช…์„ ์ ์–ด๋†“์•˜์Šต๋‹ˆ๋‹ค. 

 

 

 

์†Œ์Šค ์ฝ”๋“œ

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
// 1431๋ฒˆ: ์‹œ๋ฆฌ์–ผ ๋ฒˆํ˜ธ ํ’€์ด
#include <iostream>
#include <algorithm>
#include <vector>
 
using namespace std;
 
int n;
vector<string> guitars;
 
// ๋ฌธ์ž์—ด ํฌํ•จ๋œ ์ˆซ์ž์˜ ํ•ฉ์„ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜
int getSum(string a) {
    int len = a.length(), sum = 0;
    for (int i = 0; i < len; i++) {
        // ์ˆซ์ž๋งŒ sum์— ๋”ํ•ด์คŒ
        if (a[i] - '0' <= 9 && a[i] - '0' >= 0)
            sum += a[i] - '0';
    }
 
    return sum;
}
 
// ๋น„๊ต ํ•จ์ˆ˜
bool compare(string a, string b) {
    // ๊ธธ์ด๊ฐ€ ๋‹ค๋ฅด๋ฉด ์งง์€ ๊ฒƒ์ด ๋จผ์ €
    if (a.length() != b.length()) {
        return a.length() < b.length();
    }
    else {
        int aSum = getSum(a);
        int bSum = getSum(b);
 
        // ์ˆซ์ž์˜ ํ•ฉ์ด ์ž‘์€ ๊ฒƒ ๋จผ์ €
        if (aSum != bSum) {
            return aSum < bSum;
        }
        // ์‚ฌ์ „ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌ
        else {
            return a < b;
        }
    }
}
 
int main() {
    cin >> n;
    string input;
 
    for (int i = 0; i < n; i++) {
        cin >> input;
        guitars.push_back(input);
    }
 
    sort(guitars.begin(), guitars.end(), compare);
 
    for (int i = 0; i < n; i++)
        cout << guitars[i] << endl;
    
    return 0;
}
cs

 

 

 

 

 

 

๊ณต๋ถ€ํ•œ ๊ฒƒ์„ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. ์ˆ˜์ •ํ•  ๋ถ€๋ถ„์ด ์žˆ๋‹ค๋ฉด ์•Œ๋ ค์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค :)

 

 

728x90