Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
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
Tags
more
Archives
Today
Total
관리 메뉴

코드와이

[BAEKJOON] 1339. 단어수학 본문

acmicpc

[BAEKJOON] 1339. 단어수학

코드와이 2021. 8. 14. 03:17

 

문제링크

https://www.acmicpc.net/problem/1339

 

1339번: 단어 수학

첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대

www.acmicpc.net

 

package acmicpc.Gold4;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class 단어_수학 {

	static int n, arr[];
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		n = Integer.parseInt(br.readLine());
		arr = new int[n];
		
		// 'A', 'B', 'C' ... 'Z'
		// 알파벳이 나온 값을 저장
		List<int[]> list = new ArrayList<>();
		for(int i = 0 ; i < 26 ; i++) {
			list.add(new int[] {i, 0});
		}
		
		String input;	
		int idx;		// 자릿수 (Math.pow 2번째 값)
		for(int i = 0 ; i < n ; i++) {
			input = br.readLine();
			idx = 0;
			for(int j = input.length() - 1 ; j >= 0 ; j--) {
				// 끝에 자리 수 부터 1, 10, 100... 만큼 곱한 값을 list 에 저장(추가)
				list.get(input.charAt(j) - 'A')[1] += (int) Math.pow(10, idx++);
			}
		}
		
		// 값이 제일 큰 수가 앞으로 오도록 정렬
		Collections.sort(list, ((o1, o2) -> o2[1] - o1[1]));

		int ans = 0;
		// 가장 큰 값을 가지는 알파벳부터 9, 8, 7... 곱해주기
		int num = 9;
		for(int i = 0 ; i < 26 ; i++) {
			if(list.get(i)[1] == 0) break;
			ans += list.get(i)[1] * num--;
		}
		System.out.println(ans);
	}
}

'acmicpc' 카테고리의 다른 글

[BAEKJOON] 1715. 카드 정렬하기  (0) 2021.08.22
[BAEKJOON] 15684. 사다리 조작  (0) 2021.08.19
[BAEKJOON] 1967. 트리의 지름  (0) 2021.08.10
[BAEKJOON] 15685. 드래곤 커브  (0) 2021.08.10
[BAEKJOON] 1806. 부분합  (0) 2021.08.07