Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- RxKotiln
- 개발자
- 이펙티브 코틀린
- Flutter
- Dev6
- Rxjava 안드로이드
- 안드로이드 다이얼로그
- Kotiln
- Go언어
- 잡담
- Swift 문법
- RxJava
- android
- 프로그래머스
- 코딩테스트
- 알고리즘
- 이펙티브코틀린
- 코루틴
- 코틀린
- 안드로이드 개발자
- 안드로이드 컴포즈
- swift map
- MVVM
- 일상
- Java
- Firebase
- 반응형 프로그래밍
- react
- 안드로이드
- android compose
Archives
- Today
- Total
최데브는 오늘도 프로그래밍을 한다.
프로그래머스 - 신고 결과 받기 본문
반응형
https://programmers.co.kr/learn/courses/30/lessons/92334?language=java
import java.util.*;
class Solution {
public int[] solution(String[] id_list, String[] report, int k) {
//한 사람이 여러번 똑같은 사람을 신고하는건 의미가 없으므로 distinct로 중복을 다 제거한다.
report = Arrays.stream(report).distinct().toArray(String[]::new);
//map 은 순서를 보장하지 않으므로 LinkedHashMap 을 사용해서 순서를 보장한다.
//result는 id_list 와 같은 순서여야하기 때문.
Map<String, Integer> result = new LinkedHashMap();
Map<String, ArrayList<String>> reportMap = new HashMap<>();
for(int i =0; i< id_list.length; i++){
//먼저 결과가 들어갈 result 를 id와 함께 0 으로 초기화 한다.
result.put(id_list[i] , 0);
}
for(int i =0 ; i< report.length ; i++){
//신고자와 신고당한 사람을 나눈다.
String[] arryReport = report[i].split(" ");
String reporter = arryReport[0];
String target = arryReport[1];
//reportMap에서 신고당한 사람 key에 신고한 사람의 이름을 Arraylist에 추가한다.
//이렇게 만들면 신고당한 사람이 몇명한테 신고당했는지 size로 값을 알 수 있게 된다.
if(reportMap.containsKey(target)){
reportMap.get(target).add(reporter);
}else{
//처음 값을 넣는 경우에는 새로운 arraylist를 만들고
//신고한 사람의 이름을 집어넣고 map 에 put 한다.
ArrayList<String> temp = new ArrayList<String>();
temp.add(reporter);
reportMap.put(target ,temp );
}
}
//reportMap의 키를 전부 불러온다. 즉 신고당한 사람의 이름을 전부 가져온다.
for(String temp : reportMap.keySet()){
//해당하는 이름을 신고한 사람들의 size를 알아오고 k와 비교한다.
if(reportMap.get(temp).size() >= k){
//reportMap의 value 로 가지는 string list의 원소를 i로 받아오는것
for(String i : reportMap.get(temp)){
//k번 이상 신고당한 사람을 신고한 사람의 이름을 i 로 가져오게 된다.
//result에 신고한 사람에게 정지 받았다는 메일을 보내주기 때문에 1이 더해진다.
result.put(i , result.getOrDefault(i , 0) +1);
}
}
}
return result.values().stream().mapToInt(Integer::intValue).toArray();
}
}
반응형
'알고리즘' 카테고리의 다른 글
1이 될때까지 최소 연산 횟수 (0) | 2021.08.21 |
---|---|
알고스팟 - 소풍 (0) | 2020.06.15 |
알고스팟 - 보글게임(무식하게 풀기방법만 적용) (0) | 2020.06.15 |
프로그래머스 - 네트워크 (0) | 2020.04.19 |
프로그래머스 - 다리를 지나는 트럭 (0) | 2020.04.19 |
프로그래머스 - 가장 큰 수 (0) | 2020.04.13 |
프로그래머스 - 정수 삼각형 (0) | 2020.04.12 |
프로그래머스 - 큰 수 만들기 (0) | 2020.04.12 |
Comments