๋ฌธ์ ์ค๋ช
https://www.acmicpc.net/problem/1431
๋ค์์ด๋ ๊ธฐํ๋ฅผ ๋ง์ด ๊ฐ์ง๊ณ ์๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ๊ฐ์ ๊ธฐํ๋ ๋ชจ๋ ๋ค๋ฅธ ์๋ฆฌ์ผ ๋ฒํธ๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ๋ค์์ด๋ ๊ธฐํ๋ฅผ ๋นจ๋ฆฌ ์ฐพ์์ ๋นจ๋ฆฌ ์ฌ๋๋ค์๊ฒ ์ฐ์ฃผํด์ฃผ๊ธฐ ์ํด์ ๊ธฐํ๋ฅผ ์๋ฆฌ์ผ ๋ฒํธ ์์๋๋ก ์ ๋ ฌํ๊ณ ์ ํ๋ค.
๋ชจ๋ ์๋ฆฌ์ผ ๋ฒํธ๋ ์ํ๋ฒณ ๋๋ฌธ์ (A-Z)์ ์ซ์ (0-9)๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
์๋ฆฌ์ผ ๋ฒํธ A๊ฐ ์๋ฆฌ์ผ ๋ฒํธ B์ ์์ ์ค๋ ๊ฒฝ์ฐ๋ ๋ค์๊ณผ ๊ฐ๋ค.
- A์ B์ ๊ธธ์ด๊ฐ ๋ค๋ฅด๋ฉด, ์งง์ ๊ฒ์ด ๋จผ์ ์จ๋ค.
- ๋ง์ฝ ์๋ก ๊ธธ์ด๊ฐ ๊ฐ๋ค๋ฉด, A์ ๋ชจ๋ ์๋ฆฌ์์ ํฉ๊ณผ B์ ๋ชจ๋ ์๋ฆฌ์์ ํฉ์ ๋น๊ตํด์ ์์ ํฉ์ ๊ฐ์ง๋ ๊ฒ์ด ๋จผ์ ์จ๋ค. (์ซ์์ธ ๊ฒ๋ง ๋ํ๋ค)
- ๋ง์ฝ 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 |
๊ณต๋ถํ ๊ฒ์ ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค. ์์ ํ ๋ถ๋ถ์ด ์๋ค๋ฉด ์๋ ค์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค :)
'Algorithm > ๋ฐฑ์ค(BOJ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค BOJ / C++] 11399๋ฒ: ATM (0) | 2020.12.28 |
---|---|
[๋ฐฑ์ค BOJ / C++] 11047๋ฒ: ๋์ 0 (0) | 2020.12.28 |
[๋ฐฑ์ค BOJ / C++] 5585๋ฒ: ๊ฑฐ์ค๋ฆ๋ ํ์ด (0) | 2020.12.28 |
[๋ฐฑ์ค / C++] 10989๋ฒ: ์ ์ ๋ ฌํ๊ธฐ 3 ํ์ด (0) | 2020.07.21 |
[๋ฐฑ์ค / C++] 6603๋ฒ - "๋ก๋" ํ์ด (0) | 2020.06.26 |