🌞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로 변환하여 방문 횟수 기준 내림차순으로 정렬한다. 

최종 방문 횟수 최댓값을 출력하고, 최댓값을 가지는 도메인을 출력한다. 



 

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

[Baekjoon] 14540_Railway Station  (0) 2025.11.12
[Baekjoon] 4992_Hanafuda Shuffle  (0) 2025.11.10
[Baekjoon] 10106_The Geneva Confection  (0) 2025.11.06
[Baekjoon] 6379_Scramble Sort  (0) 2025.11.05
[Baekjoon] 29882_Ranking  (0) 2025.11.04