๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 25325_ํ•™์ƒ ์ธ๊ธฐ๋„ ์ธก์ •

๋ฟŒ์•ผ._. 2024. 6. 11. 11:00

Silver V

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

< ํ•™์ƒ ์ธ๊ธฐ๋„ ์ธก์ • >

 

๋ฌธ์ œ ํ’€์ด 

 

HashMap์„ ํ™œ์šฉํ•˜์—ฌ ํ•ด๋‹น ํ•™์ƒ์„ ์ข‹์•„ํ•˜๋Š” ํ•™์ƒ ์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค. ArrayList์— ํ•™์ƒ ์ด๋ฆ„๊ณผ ์ธ๊ธฐ๋„๋ฅผ ์ €์žฅํ•œ๋‹ค. ์ธ๊ธฐ๋„ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ, ์ธ๊ธฐ๋„๊ฐ€ ๊ฐ™๋‹ค๋ฉด ํ•™์ƒ ์ด๋ฆ„ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ ํ›„ ์ถœ๋ ฅํ•œ๋‹ค.

 

 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.HashMap;
import java.util.StringTokenizer;

public class _25325_ { // ํ•™์ƒ ์ธ๊ธฐ๋„ ์ธก์ •
	static class Student implements Comparable<Student> {
		private String name;
		private int score;

		public Student(String name, int score) {
			this.name=name;
			this.score=score;
		}

		@Override
		public int compareTo(Student o) {
			if (o.score == this.score) {
				return this.name.compareTo(o.name);
			}
			return o.score - this.score;
		}

	}

	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<>();
		st = new StringTokenizer(bf.readLine());
		for (int i = 0; i < n; i++) {
			map.put(st.nextToken(), 0);
		}

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

			while (st.hasMoreTokens()) {
				String name = st.nextToken();
				map.replace(name, map.get(name) + 1);
			}
		}

		ArrayList<Student> list = new ArrayList<>();
		for (String name : map.keySet()) {
			list.add(new Student(name, map.get(name)));
		}

		Collections.sort(list);

		for(int i=0; i<n; i++) {
			bw.write(list.get(i).name+" "+list.get(i).score+"\n");
		}
		bw.flush();
	}
}
๋ณ€์ˆ˜)
n : ํ•™์ƒ ์ˆ˜
map : HashMap <ํ•™์ƒ ์ด๋ฆ„, ์ธ๊ธฐ๋„>
list : ArrayList <ํ•™์ƒ>

 

ํ•™์ƒ ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. ํ•™์ƒ ์ˆ˜๋งŒํผ ์ด๋ฆ„์„ ์ž…๋ ฅ๋ฐ›์•„ HashMap์— ์ด๋ฆ„๊ณผ 0์„ ๊ฐ๊ฐ key, value๋กœ ์ €์žฅํ•œ๋‹ค. ํ•™์ƒ ์ˆ˜๋งŒํผ ํ•™์ƒ์˜ ์ •๋ณด๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ value๋ฅผ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค. 

 

HashMap ๊ฐ’์„ ArrayList์— ์ด๋ฆ„๊ณผ ์ธ๊ธฐ๋„๋ฅผ ๋ณ€์ˆ˜๋กœ ๊ฐ€์ง€๋Š” Student๋กœ ์ €์žฅํ•œ๋‹ค. ์ธ๊ธฐ๋„ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ, ์ธ๊ธฐ๋„๊ฐ€ ๊ฐ™๋‹ค๋ฉด ์ด๋ฆ„ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ ํ›„ ArrayList ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.