[BOJ] 1339번 단어 수학
문제 바로가기
접근
예로 AZ와 ZZ라는 두 단어가 주어진다면,
arr[A] = 10*1(첫번째 단어)
arr[Z] = 1*1(첫번째 단어) + 10*1(두번째 단어) + 1*1(두번째 단어)
다음과 같이 우선순위(?)를 계산해줄 수 있다.
이후에 우선순위를 내림차순으로 정렬하고 우선순위가 가장 큰 것부터 9~0의 가중치를 차례대로 대입하면 된다.
#include <bits/stdc++.h>
using namespace std;
int main() {
std::ios::sync_with_stdio(false);
int N;
int sum = 0;
int arr[26] = {0};
string words[10];
cin >> N;
for(int i = 0; i < N; i++) {
cin >> words[i];
for(int c = 0; c < words[i].length(); c++) {
arr[words[i][c] - 'A'] += pow(10, words[i].length() - c - 1);
}
}
sort(arr, arr + 26, greater<int>());
for(int i = 0; i < 10; i++)
sum += arr[i] * (9 - i);
cout << sum;
}
Author And Source
이 문제에 관하여([BOJ] 1339번 단어 수학), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@chowisely/BOJ-1339저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)