티스토리 뷰

알고리즘/BOJ

[백준] 1339 단어 수학

세진짱 2020. 1. 25. 12:11

 

순열을 이용해 해결할 수 있는 문제다

기억해야할건 순열을 쓰기전에 정렬시키고 사용해야 한다는 것!

 

그걸 잊고있다가 오랜시간이 걸렸당..

 

사용되는 알파벳을 찾아두고 순열로 점수를 매겨서 최댓값을 찾아보면 된다!

 

소스코드

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
#include <iostream>
#include <algorithm>
#include <map>
#include <string>
#include <cstring>
using namespace std;
int n;
int a[11],b[111];
bool c[30];
string sa[11];
 
int main(){
    scanf(" %d",&n);
    for(int i=0;i<n;i++){
        cin>>sa[i];
        for(int j=0;j<sa[i].size();j++){
            c[sa[i][j]-'A']=true;
        }
    }
    int p=0;
    int ans=0;
    for(int i=0;i<10;i++) a[i]=i;
    for(int i=0;i<26;i++if(c[i]) a[p++= i+'A';
    sort(a,a+10);
    do{
        int t=0;
        for(int i=0;i<10;i++) b[a[i]] =i;
        for(int i=0;i<n;i++){
            int temp =0;
            for(int j=0;j<sa[i].size();j++){
                temp*=10;
                temp+=b[sa[i][j]];
            }
            t+=temp;
        }
        ans = max(ans,t);
    }while(next_permutation(a,a+10));
    printf("%d\n",ans);
}
 
 

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

[백준] 1248 맞춰봐  (0) 2020.01.26
[백준] 9663 N-Queen  (0) 2020.01.26
[백준] 2529 부등호  (0) 2020.01.25
[백준] 14002 가장 긴 증가하는 부분 수열 4  (0) 2020.01.25
[백준] 15990 1,2,3 더하기 5  (0) 2020.01.24
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
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
글 보관함