[PRODGRAMMERS]レポート結果の取得
14222 ワード
🙆♀️ 質問の表示
💡 私の答えと同じプレイヤーへの通報は1回処理され,集合にレポート配列が加わり,重複を解消する. の繰り返し文字でset要素を取り出します.各要素の形態は「申告したプレイヤーが空白申告したプレイヤー」であるため,split()法を用いて空白を基準にカットする. 空白の標準の後ろの文字は通報されたプレイヤーなので、地図に名前を書きます.地図に名前がついている場合は、1を追加します. map.EntrySet()を使用して鍵と値を取得し、k回以上のアラームが受信されたかどうかを確認します.k回以上であればリストに追加します. の格納順序を変更しないようにLinkedHashMapを宣言し、すべてのユーザのIDを追加する. 現在停止しているユーザ(list)を reportUserの各要素に申告した人がいる場合は、値(メール受信回数)に1を加算します. entrySet()を使用して値を取得し、質問欄に順番に入れます.
💡 私の答え
public int[] solution(String[] id_list, String[] report, int k) {
int[] answer = new int[id_list.length];
// 신고한 유저와 신고당한 유저 배열(report)에서 중복 제거
Set<String> set = new HashSet<>();
// 신고받은 유저의 이름과 신고 횟수를 저장
Map<String, Integer> map = new HashMap<>();
// 정지된 유저 저장
List<String> list = new ArrayList<>();
for(String i : report) set.add(i);
Iterator<String> itor = set.iterator();
while(itor.hasNext()){
String name = itor.next().split(" ")[1];
if(map.containsKey(name)){
int count = map.get(name);
map.put(name, ++count);
}else{
map.put(name, 1);
}
}
for(Map.Entry<String, Integer> entry : map.entrySet()){
if(entry.getValue() >= k){
list.add(entry.getKey());
}
}
// 각 유저가 메일을 받은 횟수
Map<String, Integer> result = new LinkedHashMap<>();
for(String id : id_list) result.put(id, 0);
Iterator<String> reportUser = set.iterator();
while(reportUser.hasNext()){
String[] arr = reportUser.next().split(" ")
if(list.contains(arr[1])){
int count = result.get(arr[0]);
result.put(arr[0], ++count);
}
}
int count = 0;
for(Map.Entry<String, Integer> entry : result.entrySet()){
answer[count] = entry.getValue();
count++;
}
return answer;
}
Reference
この問題について([PRODGRAMMERS]レポート結果の取得), 我々は、より多くの情報をここで見つけました https://velog.io/@3hee_11/PROGRAMMERS-신고-결과-받기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol