본문 바로가기
컴퓨터 공학/백준

[백준] JAVA 자바 : 단어 수학 (1339번)

by kim-dev 2024. 3. 22.
반응형


문제는 대략 저렇읍니다.
내가 보기엔 직전 문제인 신입 사원이랑 이 문제랑 난이도가 바뀌어야 할 것 같다...

 

나는 어떻게 해결했냐면, 알파벳은 어차피 다 더해야 하는 수이므로 일단 자릿수만큼 1, 10, 100, 1000, ....으로 할당해서 같은 알파벳끼리 다 더해서 배열에 저장했다.

그리고 그 배열을 처음부터 다시 돌면서 가장 값이 높은 순서대로 9, 8, 7, 6, ..., 1까지 할당해서 곱해준 다음 sum에 다 합쳐서 출력해 주었다.

import java.lang.StringBuilder;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Collections;

public class WordMath {

    public static int stoi(String str) {
        return Integer.parseInt(str);
    }

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        Integer[] arr = new Integer[91];
        for (int i=0; i<91; i++) {
          arr[i] = 0;
        }
        
        int N = stoi(br.readLine());
        for (int i=0; i<N; i++) {
          String num = br.readLine();
          int ten = 1;
          for (int j=0; j<num.length(); j++) {
            char temp = num.charAt(num.length()-1-j);
            arr[temp] += ten;
            ten *= 10;
          }
        }

        Arrays.sort(arr, Collections.reverseOrder());
        
        int result = 0;
        int nine = 9;
        for (int i=0; arr[i] != 0;i++) {
          result += (arr[i] * nine);
          nine--;
        }
        
        System.out.println(result);

        br.close();
    }
}

 

 

로그인

 

www.acmicpc.net