본문 바로가기
BOJ

[JAVA] 백준 1339번 - 단어 수학

by yujinkimkim 2023. 7. 8.

1339번: 단어 수학 (acmicpc.net)

 

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

댓글