๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 22252_์ •๋ณด ์ƒ์ธ ํ˜ธ์„

๋ฟŒ์•ผ._. 2023. 7. 21. 15:36

Gold V

๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/22252)

< ์ •๋ณด ์ƒ์ธ ํ˜ธ์„ >

 

๋ฌธ์ œ ํ’€์ด 

 

HashMap๊ณผ ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋‹ค.

 

์ด๋•Œ HashMap์€ <์ด๋ฆ„, ์šฐ์„ ์ˆœ์œ„ ํ> ํ˜•ํƒœ๋กœ ์ดˆ๊ธฐํ™”ํ•˜๋ฉฐ, ์šฐ์„ ์ˆœ์œ„ ํ๋Š” ๋‚ด๋ฆผ์ฐจ์ˆœ ์ˆœ์œผ๋กœ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋’€๋‹ค.

1๋กœ ์‹œ์ž‘ํ•  ๋•Œ๋Š” key๊ฐ’์œผ๋กœ ์ด๋ฆ„์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€ ์—†๋Š”์ง€ ํŒ๋‹จํ•˜์—ฌ ์ •๋ณด๋ฅผ ์ €์žฅํ•ด ์ฃผ๊ณ ,

2๋กœ ์‹œ์ž‘ํ•  ๋•Œ๋Š” ์ •๋ณด์˜ ๊ฐœ์ˆ˜์— ๋”ฐ๋ผ ์šฐ์„ ์ˆœ์œ„ ํ์—์„œ ๋ฝ‘์•„ ๋”ํ•ด์ค€๋‹ค.

 

 my solution (Java)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Collections;
import java.util.HashMap;
import java.util.PriorityQueue;
import java.util.StringTokenizer;

public class _22252_ { // ์ •๋ณด ์ƒ์ธ ํ˜ธ์„

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;

		int q = Integer.parseInt(bf.readLine());

		HashMap<String, PriorityQueue<Integer>> map = new HashMap<>();

		long result=0;

		for (int i = 0; i < q; i++) {
			st=new StringTokenizer(bf.readLine());

			int cmd=Integer.parseInt(st.nextToken());
			String name=st.nextToken();
			int num=Integer.parseInt(st.nextToken());

			if(cmd==1) {
				if(!map.containsKey(name)) {
					PriorityQueue<Integer>queue=new PriorityQueue<>(Collections.reverseOrder());
					for(int j=0; j<num; j++) {
						queue.add(Integer.parseInt(st.nextToken()));
					}
					map.put(name, queue);

				}else {
					for(int j=0; j<num; j++) {
						map.get(name).add(Integer.parseInt(st.nextToken()));
					}
				}
			}else {
				if(map.containsKey(name)) {
					PriorityQueue<Integer>temp=map.get(name);
					int l= num>temp.size() ? temp.size() : num;
					for(int j=0; j<l; j++) {
						result+=temp.poll();
					}
				}
			}
		}
		System.out.println(result);
	}

}

 

Main

๋ณ€์ˆ˜)
q : ์ฟผ๋ฆฌ์˜ ๊ฐœ์ˆ˜
map : <๊ณ ๋ฆด๋ผ ์ด๋ฆ„, ์šฐ์„ ์ˆœ์œ„ ํ <์ •๋ณด>>
result : ์ •๋ณด ๊ฐ€์น˜ ์ดํ•ฉ
cmd : 1 or 2
name : ๊ณ ๋ฆด๋ผ ์ด๋ฆ„
num : ์ •๋ณด์˜ ๊ฐœ์ˆ˜
queue : ์šฐ์„ ์ˆœ์œ„ ํ / ๋‚ด๋ฆผ์ฐจ์ˆœ

 

-์ฟผ๋ฆฌ์˜ ๊ฐœ์ˆ˜(q) ์ž…๋ ฅ

- ์ฟผ๋ฆฌ์˜ ๊ฐœ์ˆ˜๋งŒํผ ์ฟผ๋ฆฌ ์ž…๋ ฅ

: 1๋กœ ์‹œ์ž‘ํ•œ๋‹ค๋ฉด map์— key ๊ฐ’์œผ๋กœ ๊ณ ๋ฆด๋ผ์˜ ์ด๋ฆ„์ด ์žˆ๋Š”์ง€ ์—†๋Š”์ง€ ํ™•์ธ ํ›„ ์žˆ์œผ๋ฉด ์ถ”๊ฐ€, ์—†์œผ๋ฉด PriorityQueue ๋งŒ๋“ค์–ด์„œ ์ถ”๊ฐ€

: 2๋กœ ์‹œ์ž‘ํ•œ๋‹ค๋ฉด ๊ตฌ๋งคํ•˜๋ ค๋Š” ์ •๋ณด์˜ ๊ฐœ์ˆ˜๊ฐ€ queue์˜ size๋ณด๋‹ค ํฐ์ง€ ํ™•์ธ ํ›„ ๋‘˜ ์ค‘์— ์ž‘์€ ๊ฐ’ ๊ฐœ์ˆ˜๋งŒํผ ๋ฝ‘์•„์„œ result์— ๋”ํ•ด์คŒ

- ์ •๋ณด ๊ฐ€์น˜ ์ดํ•ฉ(result) ์ถœ๋ ฅ