๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 15237_Cipher

๋ฟŒ์•ผ._. 2025. 4. 3. 17:24
๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/15237)

< Cipher >

 

๋ฌธ์ œ ํ’€์ด 

 

๋นˆ๋„์ˆ˜๋กœ ์ •๋ ฌํ•˜๋ฉฐ, ๋นˆ๋„์ˆ˜๊ฐ€ ๊ฐ™๋‹ค๋ฉด ์ž…๋ ฅ ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค.

์ž…๋ ฅ ์ˆœ์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด HashMap์˜ value ๊ฐ’์„ ๋ฐฐ์—ด๋กœ ์„ ์–ธํ•˜๋ฉฐ, ๋ฐฐ์—ด 0๋ฒˆ์งธ ๊ฐ’์„ ์ž…๋ ฅ ์ˆœ, 1๋ฒˆ์งธ ๊ฐ’์„ ๋นˆ๋„์ˆ˜๋กœ ๊ตฌํ˜„ํ•œ๋‹ค.

 

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 _15237_ { // Cipher
 
 	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 = new StringTokenizer(bf.readLine());
 
 		int N = Integer.parseInt(st.nextToken());
 		int C = Integer.parseInt(st.nextToken());
 
 		st = new StringTokenizer(bf.readLine());
 
 		HashMap<Integer, int[]> map = new HashMap<>();
 		for (int i = 0; i < N; i++) {
 			int num = Integer.parseInt(st.nextToken());
 
 			if (map.containsKey(num)) {
 				map.get(num)[1] += 1;
 			} else {
 				int arr[] = { i, 1 };
 				map.put(num, arr);
 			}
 		}
 
 		ArrayList<Integer> list = new ArrayList<>(map.keySet());
 		Collections.sort(list, new Comparator<Integer>() {
 			@Override
 			public int compare(Integer o1, Integer o2) {
 				if (map.get(o1)[1] == map.get(o2)[1]) {
 					return map.get(o1)[0] - map.get(o2)[0];
 				}
 				return map.get(o2)[1] - map.get(o1)[1];
 			}
 		});
 
 		for (int i = 0; i < list.size(); i++) {
 			for (int j = 0; j < map.get(list.get(i))[1]; j++) {
 				bw.write(list.get(i) + " ");
 			}
 		}
 		bw.flush();
 	}
 }
๋ณ€์ˆ˜)
N, C : ๋ฉ”์‹œ์ง€ ๊ธธ์ด, ์ž‘์—… ์ˆซ์ž
map : HashMap <์ž‘์—… ์ˆซ์ž, int [] arr >
num : ์ž‘์—… ์ˆซ์ž
list : HashMap key -> ArrayList

 

๋ฉ”์‹œ์ง€ ๊ธธ์ด N๊ณผ ์ž‘์—… ์ˆซ์ž C๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. N๋งŒํผ ์ •์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ HashMap์— key ๊ฐ’์œผ๋กœ ์žˆ๋‹ค๋ฉด value์ธ ๋ฐฐ์—ด์˜ 1๋ฒˆ์งธ ๊ฐ’์„ 1 ์ฆ๊ฐ€ํ•˜๊ณ , key ๊ฐ’์œผ๋กœ ์—†๋‹ค๋ฉด value์— ๋ฐฐ์—ด [์ž…๋ ฅ ์ˆœ์„œ, 1]์„ ์ €์žฅํ•œ๋‹ค.

 

HashMap์˜ key ๊ฐ’์„ ArrayList๋กœ ๋ณ€ํ™˜ ํ›„ ๋นˆ๋„์ˆ˜ ๊ธฐ์ค€ ๋‚ด๋ฆผ์ฐจ์ˆœ, ๋นˆ๋„์ˆ˜๊ฐ€ ๊ฐ™๋‹ค๋ฉด ์ž…๋ ฅ ์ˆœ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค. ์ •๋ ฌํ•œ ์ˆœ์„œ๋Œ€๋กœ ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.



 

'๐ŸŒžAlgorithm > ๐Ÿ”ฅBaekjoon' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Baekjoon] 6138_Exploration  (0) 2025.04.04
[Baekjoon] 3211_kino  (0) 2025.04.02
[Baekjoon] 14184_IOI 2017 Logo  (0) 2025.04.01
[Baekjoon] 5614_ๅ•้กŒ 3  (0) 2025.03.31
[Baekjoon] 24755_Election Paradox  (0) 2025.03.27