[Java] 백준 / 단어 수학 / 1339번

정현명·2022년 2월 20일
0

baekjoon

목록 보기
66/180

[Java] 백준 / 단어 수학 / 1339번

문제

단어 수학 문제 링크

접근 방식

알파벳을 키로 , 정수형을 값으로 하는 HashMap을 생성한 후 해당 알파벳을 키로하여 값에 자리수를 더해준다 ( ABC → A : 100 , B : 10, C : 1 )

값들을 리스트로 만들고 정렬한 후 큰 값부터 9 , 8 .. 을 곱하여 합한다



코드

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

public class Main_1339 {
	
	
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int N = Integer.parseInt(br.readLine());
		
		HashMap<Character, Integer> map = new HashMap<>();
		for(int i=0;i<N;i++) {
			String str = br.readLine();
			
			for(int j=0;j<str.length();j++) {
				char alpha = str.charAt(j);
				if(map.containsKey(alpha)) map.put(alpha, map.get(alpha) + (int)Math.pow(10, str.length() -1 -j));
				else map.put(alpha, (int)Math.pow(10, str.length() -1 -j));
			}
		}
		
		List<Integer> list = new ArrayList<>();
		
		for(int num : map.values()) {
			list.add(num);
		}
		
		Collections.sort(list,(a,b) -> b - a);
		
		int sum = 0;
		for(int i=0;i<list.size();i++) {
			sum+= list.get(i) * (9-i);
		}
		
		System.out.println(sum);
	}
	
	
		
}
profile
꾸준함, 책임감

0개의 댓글