🌞Algorithm/🔥Baekjoon

[Baekjoon] 5614_問題 3

뿌야._. 2025. 3. 31. 23:44
문제(출처: https://www.acmicpc.net/problem/5614)

< 問題 3 >

 

문제 풀이 

 

각 제품의 주문 수를 구해 문자열 길이 기준 오름차순, 알파벳 순으로 정렬하여 출력한다.

 

my solution (Java)

 import java.io.BufferedReader;
 import java.io.BufferedWriter;
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.io.OutputStreamWriter;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashMap;
 import java.util.StringTokenizer;
 
 public class _5614_ { // 問題 3
 
 	public static void main(String[] args) throws IOException {
 		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
 		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
 		StringTokenizer st;
 
 		int n = Integer.parseInt(bf.readLine());
 
 		HashMap<String, Integer> map = new HashMap<>();
 		for (int i = 0; i < n; i++) {
 			st = new StringTokenizer(bf.readLine());
 
 			String str = st.nextToken();
 			int num = Integer.parseInt(st.nextToken());
 
 			if (map.containsKey(str)) {
 				map.put(str, map.get(str) + num);
 			} else {
 				map.put(str, num);
 			}
 		}
 
 		ArrayList<String> list = new ArrayList<>(map.keySet());
 
 		Collections.sort(list, new Comparator<String>() {
 
 			@Override
 			public int compare(String o1, String o2) {
 				if (o1.length() == o2.length()) {
 					return o1.compareTo(o2);
 				}
 				return o1.length() - o2.length();
 			}
 		});
 
 		for (int i = 0; i < list.size(); i++) {
 			bw.write(list.get(i) + " " + map.get(list.get(i)) + "\n");
 		}
 
 		bw.flush();
 	}
 }
변수)
n : 주문 수
map : HashMap <제품명, 주문 수>
str, num : 제품명, 주문 수
list : HashMap key -> ArrayList

 

주문 수 n을 입력받는다. n만큼 제품명과 주문 수를 입력받아 HashMap에 저장한다. HashMap의 key 값을 ArrayList로 바꾼 후 제품명 길이 기준 오름차순, 제품명의 길이가 같다면 알파벳 순으로 정렬하여 출력한다.



 

'🌞Algorithm > 🔥Baekjoon' 카테고리의 다른 글

[Baekjoon] 3211_kino  (0) 2025.04.02
[Baekjoon] 14184_IOI 2017 Logo  (0) 2025.04.01
[Baekjoon] 24755_Election Paradox  (0) 2025.03.27
[Baekjoon] 23895_Allocation  (0) 2025.03.26
[Baekjoon] 6566_애너그램 그룹  (0) 2025.03.25