코테/백준

[백준/JAVA] 1339번: 단어 수학

imname1am 2023. 8. 31. 17:48
반응형

🔺 문제

 

1339번: 단어 수학

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

www.acmicpc.net

 

 

🔺 코드

 
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
29
30
31
32
33
34
35
36
37
38
39
40
import java.util.*;
import java.io.*;
 
public class Main {
    static int N;
    static int[] alphabet = new int[26];
    
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        N = Integer.parseInt(br.readLine());
        
        // 입력 받기
        for(int i = 0 ; i < N ; i++) {
            
            String str = br.readLine();
            
            // 🔔 자릿수에 따라 가중치 부여
            for(int j = 0 ; j < str.length() ; j++) {
                alphabet[str.charAt(j) - 'A'+= (int) Math.pow(10, str.length() - 1 - j);
            }
        }
        Arrays.sort(alphabet);    // 가중치 오름차순 정렬
        
        int num = 9;
        int turn = 25;
        int ans = 0;
        
        // 🔔 가중치 높은 것부터 내림차순으로 순회 🔔
        // * alphabet[turn] : 현재 순회 중인 알파벳의 가중치
        while(alphabet[turn] != 0) {    
            ans += alphabet[turn] * num;    // 📍 가중치가 큰 알파벳에 큰 수 부여
            
            turn--;
            num--;
        }
        
        System.out.println(ans);
    }
}
cs
✅ 해결 아이디어
✔ 그리디
: 1) 가장 많이 나오고, 2) 가장 높은 자리에 위치한 순서대로 가장 높은 숫자 부여
⇨ 각 문자마다 위치한 자릿수에 따라 가중치 정해 더함

(ACDEB에서 10000의 자리면 A에 가중치 10000 부여, C에 가중치 1000 부여, ....)
⇨ 곱해지는 값이 가장 큰 알파벳에 큰 수 할당

 

💥 유의사항

• 특정 알파벳에 얼만큼의 가중치가 있는지는 신경쓸 필요 X

 

 


🔺 다른 풀이들

- HashMap을 사용하셨다.

 

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

문제 민식이는 수학학원에서 단어 수학 문제를 푸는 숙제를 받았다. 단어 수학 문제는 N개의 단어로 이루어져 있으며, 각 단어는 알파벳 대문자로만 이루어져 있다. 이때, 각 알파벳 대문자를 0

steady-coding.tistory.com


💬 느낀 점

이런 생각은 어떻게 하시는지,,,,,,

아직 배울 점이 많다,,,!!!

 

1회독 2회독 3회독 4회독 5회독
V        

(참고)

 

[백준] 1339번 - 단어 수학 (Java)

풀이 키워드 그리디 알고리즘 단어의 합의 최댓값을 구하기 위해서는 (1. 가장 많이 나오고) (2. 가장 높은 자리에 위치) 한 순서대로 가장 높은 숫자를 부여하면 된다. 그때 그때 가장 최선의 경

mountain96.tistory.com

 

반응형