250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 백준#BOJ#12865#평범한배낭
- 백준#BOJ#1939#중량제한
- 백준#boj#16932#모양만들기
- 백준#BOJ#14501#퇴사#브루트포스
- 백준#boj#12755
- 백준#BOJ#2615#오목
- 백준#BOJ#8012#한동이는영업사원
Archives
- Today
- Total
순간을 성실히, 화려함보단 꾸준함을
[boj : 1339 ] 단어 수학 본문
https://www.acmicpc.net/problem/1339
해설 : 전형적인 브루트포스 문제입니다. 모든 가능한 경우의 수를 해보면 되죠.
주어진 문자열을 문자 하나씩 중복되지 않게 순차적으로 0번부터 X번이라고 가정하고 permutation을 돌려주면 됩니다.
전 중복처리를 map 자료구조를 이용해서 해주었습니다.
/*JAVA IO Template Reference : 류호석*/
import javax.xml.crypto.dsig.XMLSignature;
import java.io.*;
import java.lang.reflect.Array;
import java.lang.reflect.ParameterizedType;
import java.nio.charset.StandardCharsets;
import java.util.*;
import static java.lang.Math.*;
public class Main {
private static FastIO scan = new FastIO();
//정답은 sb에 append 를 사용하여 출력
//만약 개행까지 출력하고 싶으면 append('\n')을 추가
static StringBuilder sb = new StringBuilder();
static int n,ans;
static int[] per = new int[10];
static boolean[] visit = new boolean[10];
static String[] arr = new String[10];
static Map<Character,Integer> mp = new HashMap<>();
public static void main(String[] args) {
//int t;
//t = scan.nextInt();
//while(t-->0){
solve();
//}
}
public static void solve() {
int cnt=0;
n = scan.nextInt();
for(int i=0;i<n;i++){
arr[i]=scan.next();
for(int j=0;j<arr[i].length();j++){
if(!mp.containsKey(arr[i].charAt(j)))
mp.put(arr[i].charAt(j),cnt++);
}
}
dfs(0);
System.out.println(ans);
}
public static void dfs(int depth){
if(depth==mp.size()){
int ret=0;
for(int i=0;i<n;i++){
int x=0;
for(int j=0;j<arr[i].length();j++){
x*=10;
x+=per[mp.get(arr[i].charAt(j))];
}
ret+=x;
}
ans = max(ans,ret);
return;
}
for(int i=0;i<10;i++){
if(!visit[i]){
visit[i]=true;
per[depth]=i;
dfs(depth+1);
per[depth]=0;
visit[i]=false;
}
}
}
}
class Pair{
int x,y;
public Pair(int x,int y){
this.x=x;
this.y=y;
}
}
class FastIO{
BufferedReader br;
StringTokenizer st;
public FastIO(){
br = new BufferedReader(new InputStreamReader(System.in));
}
int nextInt(){
return Integer.parseInt(next());
}
double nextDouble(){
return Double.parseDouble(next());
}
Long nextLong(){
return Long.parseLong(next());
}
String nextLine(){
String str="";
try{
str = br.readLine();
}catch (IOException e){
e.printStackTrace();
}
return str;
}
String next() {
while (st == null || !st.hasMoreElements()) {
try {
st = new StringTokenizer(br.readLine());
} catch (IOException e) {
e.printStackTrace();
}
}
return st.nextToken();
}
}
'알고리즘,SQL > 백준,BOJ' 카테고리의 다른 글
[ boj : 22232 ] 가희와 파일 탐색기 (0) | 2022.01.10 |
---|---|
[ boj : 22233 ] 가희와 키워드 (0) | 2022.01.09 |
[ boj : 24039 ] 2021은 무엇이 특별할까? (0) | 2022.01.01 |
[ boj : 23563 ] 벽 타기 (0) | 2021.12.28 |
[ boj : 14628 ] 입 챌린저 (0) | 2021.12.18 |