-
[프로그래머스] 신고 결과 받기 (2022 KAKAO BLIND RECRUITMENT)ALGORITHM/PROGRAMMERS 2022. 5. 28. 16:50
https://programmers.co.kr/learn/courses/30/lessons/92334?language=java
2022-05-28
12345678910111213141516171819202122232425262728293031import java.util.*;import java.util.stream.Collectors;public class Solution92334 {public static int[] solution(String[] id_list, String[] report, int k) {int[] answer = new int[id_list.length];ArrayList<String> ans = new ArrayList<String>(List.of(id_list));//distinctList<String> list = Arrays.stream(report).distinct().collect(Collectors.toList());HashMap<String, Integer> count = new HashMap<>();for(String x : list) {String target = x.split(" ")[1];count.put(target, count.getOrDefault(target, 0) + 1);}for(int i = 0; i < list.size(); i++) {String src = list.get(i).split(" ")[0];String tar = list.get(i).split(" ")[1];if(count.containsKey(tar) && count.get(tar) >= k) answer[ans.indexOf(src)]++;}return answer;}public static void main(String[] args) {String[] id = {"muzi", "frodo", "apeach", "neo"};String[] r = {"muzi frodo","apeach frodo","frodo neo","muzi neo","apeach muzi"};int k = 2;System.out.println(Arrays.toString(solution(id, r, k)));}}cs #문제풀이
작년 카카오 코테 문제라서 풀어봤지만 다시 풀어봤다. 그리고 다른 사람 풀이 중 stream distinct를 사용한 좋은 풀이를 봐서 그걸 이용해서 다시 풀어봤다.
한 유저를 여러 번 신고할 수도 있지만, 동일한 유저에 대한 신고 횟수는 1회로 처리됩니다. 라는 조건이 있어서 먼저 distinct로 중복을 제거한 새로운 스트림을 list로 만들었다.
그리고 신고를 당할 타겟들의 갯수를 카운트 해주고, 해당 타겟들을 신고한 유저들에 대해서 신고한 횟수가 k 이상이면 answer++ 해주었다.
'ALGORITHM > PROGRAMMERS' 카테고리의 다른 글
[프로그래머스] 성격 유형 검사하기 (2022 KAKAO TECH INTERNSHIP) (0) 2022.09.14 [프로그래머스] 주차 요금 계산 (2022 KAKAO BLIND RECRUITMENT) (0) 2022.06.02 [프로그래머스] 3진법 뒤집기 (월간 코드 챌린지 시즌1) (0) 2021.12.06 [프로그래머스] 체육복 (0) 2021.12.06 [프로그래머스] 스티커 모으기(2) - (Summer/Winter Coding(~2018)) (0) 2021.10.30