티스토리 뷰
프로그래머스 92334번 - 신고 결과 받기
요구사항
1. 각 유저는 한 번에 한 명의 유저를 신고할 수 있습니다.
2. 동일한 유저에 대해 여러 번 신고할 경우 신고 횟수는 1회로 처리됩니다.
3. k번 이상 신고된 유저에 대해서는 해당 유저를 신고한 모든 유저에게 정지 사실을 메일로 발송합니다.
4. 각 유저별로 처리 결과 메일을 받은 횟수를 유저 ID 순으로 배열로 반환하라.
요구사항 분석 및 풀이과정
1. 신고당한 사람을 키로, 신고한 사람들을 값으로 하여 HashMap을 이용하여 신고에 대한 정보들을 기록합니다.
2. 신고당한 사람들을 조회하여 신고한 유저가 수가 k명 이상이면 신고한 유저들은 처리 결과 메일을 받을 것이기 때문에 각 유저별로 처리 결과 메일을 받는 횟수를 누적하여줍니다.
3. 유저 ID 순으로 기록을 하여 야하기 때문에 2번의 결과를 구할 때 LinkedHashMap을 사용합니다.
소스코드 작성
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
class Solution {
private static Map<String, Set<String>> summaryReport(String[] reports) {
Map<String, Set<String>> table = new HashMap<>();
for (String report : reports) {
String[] tokens = report.split(" ");
String from = tokens[0];
String to = tokens[1];
table.computeIfAbsent(to, (it) -> new HashSet<>()).add(from);
}
return table;
}
private static Map<String, Integer> counterReport(String[] ids) {
Map<String, Integer> counter = new LinkedHashMap<>();
for (String id : ids) {
counter.put(id, 0);
}
return counter;
}
public int[] solution(String[] ids, String[] reports, int k) {
Map<String, Set<String>> summaryReport = summaryReport(reports);
Map<String, Integer> counterReport = counterReport(ids);
for (Map.Entry<String, Set<String>> entry : summaryReport.entrySet()) {
if (entry.getValue().size() < k) {
continue;
}
for (String from : entry.getValue()) {
counterReport.put(from, counterReport.getOrDefault(from, 0) + 1);
}
}
return counterReport.values().stream().mapToInt(Integer::intValue).toArray();
}
}
결과
소스코드 깃허브 주소
'코딩테스트 > 알고리즘' 카테고리의 다른 글
[알고리즘]프로그래머스 12951번 - JadenCase 문자열 만들기 (0) | 2022.01.22 |
---|---|
[알고리즘]프로그래머스 43238번 - 입국심사 (0) | 2022.01.20 |
[알고리즘]프로그래머스 17684번 - [3차]압축 (0) | 2022.01.19 |
[알고리즘]프로그래머스 12900번 - 2 x n 타일링 (0) | 2022.01.19 |
[알고리즘]프로그래머스 12978번 - 배달 (0) | 2022.01.18 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 스트림
- 문자열
- 스택
- dfs
- TDD
- 탐욕법
- k8s
- 해쉬
- 쓰레드
- dsu
- 카카오
- 알고리즘
- 오늘의집
- 정렬
- 프로그래머스
- dp
- 우선순위큐
- 비트연산
- sql
- 회고
- Java
- set
- Uber
- BFS
- 코드 스니펫
- 구현
- kotlin
- 코딩인터뷰
- 연결리스트
- JPA
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함