Joshbla 2022. 6. 9. 01:05

2022/06/09

  • 프로그래머스 코딩테스트연습 lv.1 신고결과 받기

 

- 풀이1

import java.util.HashMap;
import java.util.HashSet;

class Solution {
	public int[] solution(String[] id_list, String[] report, int k) {
		HashMap<String, Integer> map = new HashMap<>();
		HashSet<String> set = new HashSet<>();

		for (int i = 0; i < report.length; i++) {
			set.add(report[i]);
		}
		report = new String[set.size()];
		int x = 0;
		for (String a : set) {
			report[x] = a;
			x++;
		}

		int[] reported = new int[id_list.length];

		for (int i = 0; i < id_list.length; i++) {
			map.put(id_list[i], i);
		}
		int[] answer = new int[id_list.length];

		for (int i = 0; i < report.length; i++) {
			reported[map.get(report[i].split(" ")[1])]++;
		}

		for (int i = 0; i < reported.length; i++) {
			if (reported[i] >= k) {
				for (int j = 0; j < report.length; j++) {
					if (report[j].split(" ")[1].equals(id_list[i])) {
						answer[map.get(report[j].split(" ")[0])]++;
					}
				}

			}
		}

		return answer;
	}
}

- 풀이2

import java.util.HashMap;
import java.util.HashSet;
import java.util.ArrayList;

class Solution {
	public int[] solution(String[] id_list, String[] report, int k) {
		HashMap<String, Integer> map = new HashMap<>();

		for (int i = 0; i < id_list.length; i++) {
			map.put(id_list[i], i);
		}

		int[] answer = new int[id_list.length];

		ArrayList<HashSet<String>> setList = new ArrayList<>();
		for (int i = 0; i < id_list.length; i++) {
			HashSet<String> set = new HashSet<>();
			setList.add(set);
		}

		for (int i = 0; i < report.length; i++) {
			String[] str = report[i].split(" ");

			setList.get(map.get(str[1])).add(str[0]);
		}

		for (int i = 0; i < setList.size(); i++) {
			if (setList.get(i).size() >= k) {
				for (String a : setList.get(i)) {
					answer[map.get(a)]++;
				}
			}
		}

		return answer;
	}
}