๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 3277_DOMAINS

๋ฟŒ์•ผ._. 2025. 11. 7. 00:23
๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/3277)

< DOMAINS >

 

๋ฌธ์ œ ํ’€์ด 

 

๋„๋ฉ”์ธ์€ ๋งˆ์ง€๋ง‰ . ๋’ค์— ์˜ค๋Š” ๊ฐ’์ด๋ฏ€๋กœ split์„ ํ™œ์šฉํ•˜์—ฌ ๊ตฌํ•œ๋‹ค.

 

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;

public class _3277_ { // DOMAINS

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

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

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

		for (int i = 0; i < n; i++) {
			String address = bf.readLine().replace("http://", "");

			String temp[] = address.split("\\.");

			String result = temp[temp.length - 1].split("/")[0];

			if (map.containsKey(result)) {
				map.replace(result, map.get(result) + 1);
			} else {
				map.put(result, 1);
			}
		}

		ArrayList<String> list = new ArrayList<>(map.keySet());
		Collections.sort(list, new Comparator<String>() {
			@Override
			public int compare(String o1, String o2) {
				return map.get(o2) - map.get(o1);
			}
		});

		bw.write(map.get(list.get(0)) + "\n");

		for (int i = 0; i < list.size(); i++) {
			if (map.get(list.get(i)) == map.get(list.get(0))) {
				bw.write(list.get(i) + " ");
			}
		}
		bw.flush();
	}
}
๋ณ€์ˆ˜)
n : ์ฃผ์†Œ์˜ ๊ฐœ์ˆ˜
map : HashMap <๋„๋ฉ”์ธ, ๋ฐฉ๋ฌธ ํšŸ์ˆ˜>
address : ์ฃผ์†Œ
temp : address๋ฅผ "." ๊ธฐ์ค€ split ํ•œ ๊ฒฐ๊ด๊ฐ’
result : ๋„๋ฉ”์ธ
list : HashMap key -> ArrayList

 

์ฃผ์†Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ์ฃผ์†Œ ๊ฐœ์ˆ˜๋งŒํผ ๋‹ค์Œ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

 

1) ์ž…๋ ฅ๋ฐ›์€ ์ฃผ์†Œ์—์„œ replace๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ "http://"๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค.

2) ๋„๋ฉ”์ธ์„ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด address ๊ฐ’์„ "."๊ธฐ์ค€ split ํ•œ๋‹ค.

3) temp์˜ ๋งˆ์ง€๋ง‰ ๊ฐ’์„ "/"๊ธฐ์ค€ split ํ•œ ๊ฒฐ๊ด๊ฐ’์˜ 0๋ฒˆ์งธ ๊ฐ’์ด ๋„๋ฉ”์ธ์ด๋‹ค.

4) HashMap์— ๋ฐฉ๋ฌธ ํšŸ์ˆ˜๋ฅผ ์—…๋ฐ์ดํŠธํ•œ๋‹ค.

 

HashMap์˜ key ๊ฐ’์„ ArrayList๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐฉ๋ฌธ ํšŸ์ˆ˜ ๊ธฐ์ค€ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค. 

์ตœ์ข… ๋ฐฉ๋ฌธ ํšŸ์ˆ˜ ์ตœ๋Œ“๊ฐ’์„ ์ถœ๋ ฅํ•˜๊ณ , ์ตœ๋Œ“๊ฐ’์„ ๊ฐ€์ง€๋Š” ๋„๋ฉ”์ธ์„ ์ถœ๋ ฅํ•œ๋‹ค.