1339번: 단어 수학
첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대
www.acmicpc.net
실은 구글링을 조금 했슴니다
이 문제는 약간 방정식 푸는 느낌?으로 푸는 느낌?인데요
ABC DABC라 치면
100A+10B+C + 1000D+100A+10B+C
가 되고 이 더한 합은
1000D+200A+20B+2C
잖아요 여기에 D부터 해서 제일 큰 수인 9부터 대입을 하면 됩니다
알파벳 배열을 만들어서 해당 알파벳에 해당하는 인덱스에 저 1000,200에 해당하는 숫자를 넣어주고
알파벳 배열을 내림차순으로 만들어서
하나씩 꺼내와서 9부터 대입하는 과정하면 됩니다
package baekjoon;
import java.util.*;
import java.io.*;
import java.lang.reflect.Array;
public class b1339 {
public static void main(String[] args) throws IOException{
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
Integer alpha[] = new Integer[26];
Arrays.fill(alpha, 0);
for(int i = 0 ; i < n ; i++)
{
String temp = br.readLine();
int num = (int)Math.pow(10, temp.length() - 1);
for(int j = 0 ; j < temp.length() ; j++)
{
alpha[temp.charAt(j)-'A'] += num;
num /= 10;
}
}
Arrays.sort(alpha, Collections.reverseOrder());
n = 9;
int sum = 0;
for(int i : alpha)
{
if(i == 0)
break;
sum += i * n;
n--;
}
bw.write(sum+"");
bw.close();
}
}
내림차순으로 하려고
Arrays.sort(alpha, Collections.reverseOrder());
이걸 하려했는데 저 Collections.reverseOrder()가 배열이 Integer형일 때만 사용할 수 있다구 하더라구요
그래서 바꿨는데
alpha[temp.charAt(j)-'A'] += num;
여기에서 오류가 나더라구요
Integer형은 0으로 초기화를 미리 해줘야하나봐요
그래서 Arrays.fill()썼슴니다
'BOJ' 카테고리의 다른 글
[JAVA]백준 2064번 - IP주소 (0) | 2023.07.11 |
---|---|
[JAVA] 백준 11404번 - 플로이드 (0) | 2023.07.09 |
[JAVA] 백준 24391번 - 귀찮은 해강이 (0) | 2023.07.08 |
[JAVA]백준 16562번 - 친구비 (2) | 2023.07.06 |
[JAVA] 백준 12865번 - 평범한 배낭 (2) | 2023.07.05 |
댓글