#include <iostream>
#include <string>
#include <cstring>
#include <algorithm>
#include <functional>
#include <vector>
using namespace std;
vector<string> v;
int i, j;
int main()
{
//1. 입력받기
ios::sync_with_stdio(0), cin.tie(0);
int N; cin >> N;
v.resize(N);
for (int i = 0; i < N; ++i)
{
cin >> v[i];
}
//2. 각 자리수 합하고 저장
int alp[27];
memset(alp, 0, sizeof(int) * 27);
for (i = 0; i < v.size(); ++i)
{
int pow = 1;
for (j = v[i].size() - 1; 0<= j ; --j)
{
alp[v[i][j] - 'A'] += pow;
pow *= 10;
}
}
sort(alp, alp + 27, greater());
int result = 0;
int cnt = 9;
for (auto data : alp)
{
result += data * cnt;
--cnt;
}
cout << result;
return 0;
}
||사고 과정
이번 문제는 못풀었다ㅠ
못푼 주 요인은 문제 해석을 잘못했다.
완전 핀트가 나갔었음
||사용 기법
- Greedy
||풀면서 느낀 것
- 테스트 케이스를 좀 분석해야봐야 할듯하다.
문제 해석하고 대충 테스트케이스에서 이러니까 이렇게 나오는구나 말고
input, output이 내가 확인한 과정과 똑같이 나오는지 세세하게 확인을 해야겠다
- 그리디는 거의 정렬이 필수인듯하다.
여태 그리디를 풀면서 정렬을 안쓴적이 없는거 같다.
- 가중치
어떻게 보면 가중치가 있다고 볼수있는데 가중치를 이용한건 처음인거 같아서
앞으로 가중치도 필수로 고려해봐야겠다.
'코딩 테스트 > 알고리즘 풀이' 카테고리의 다른 글
[코드포스 - 1714C] Minimum Varied Number (0) | 2022.08.10 |
---|---|
[백준 - 24479] 알고리즘 수업 - 깊이 우선 탐색 1 (0) | 2022.08.10 |
[백준 - 10951] A+B - 4 (0) | 2022.08.10 |
[백준 - 2562] 문자열 반복 (0) | 2022.08.10 |
[코드포스 - 1716A] 2-3 Moves (0) | 2022.08.06 |