https://school.programmers.co.kr/learn/courses/30/lessons/92334?language=java
1. Map 사용하는 문제
첫 코드는 다음과 같다
import java.util.HashMap;
import java.util.List;
import java.util.ArrayList;
class Solution {
public int[] solution(String[] id_list, String[] report, int k) {
int[] answer = {};
HashMap<String, List<String>> r = new HashMap<String, List<String>>(); // <신고자, 피신고자>
HashMap<String, Integer> rr = new HashMap<String, Integer>(); // <피신고자, 신고수>
for(int i=0; i<id_list.length; i++){
r.put(id_list[i], new ArrayList<String>());
rr.put(id_list[i], 0);
}
for(int i=0; i<report.length; i++){
String[] nr = report[i].split(" ");
if(!r.get(nr[0]).contains(nr[1])){
r.get(nr[0]).add(nr[1]);
rr.put(nr[1], rr.get(nr[1]) + 1);
}
}
answer = new int[id_list.length];
for(int i=0; i<id_list.length; i++){
List<String> tmp = r.get(id_list[i]);
int tmpCnt = 0;
for(int j=0; j<tmp.size(); j++){
if(rr.get(tmp.get(j))>=k){
tmpCnt++;
}
}
answer[i]=tmpCnt;
}
return answer;
}
}
2. 중간정리
HashMap
- put, get, containKey, remove, size
- 기존 key의 value값 바꾸기 : map.put(map.get(key), new_value);
array
- array의 크기는 array.length <-> List의 크기는 list.size()
- 초기화 : int[] arr; arr = new int[size];
3. 코드보완
- stream 활용 : distinct, collect, Collectors
- Collectors 알아보기
- 향상된 for문..
4. Collectors
- collect() : stream의 최종 element를 수집 ex) Array.stream(var).*.collect(Collectors.*);
- Collectors<T, A, R> : <T 요소, A 누적기, R 저장될컬렉션> : collect의 매개값
Stream<Student> totalStream = totalList.stream();
Stream<Student> maleStream = totalStream.filter(s -> s.getSex() == Student.Sex.MALE);
Collector<Student, ?, List<Student>> collector = Collectors.toList();
List<Student> maleList = maleStream.collect(collector);
// ==
List<Student> maleList = totalList.stream()
.filter(s -> s.getSex() == Student.Sex.MALE)
.collect(Collectors.toList());
// 출처 : https://cornswrold.tistory.com/384
'알고리즘 > 알고리즘' 카테고리의 다른 글
[JAVA] 프로그래머스 : 신규 아이디 추천 (0) | 2022.08.01 |
---|---|
[JAVA] 프로그래머스 : 로또의 최고 순위와 최저 순위 (0) | 2022.08.01 |
[C++] 프로그래머스 : 메뉴 리뉴얼 (0) | 2022.06.11 |
[C++] 프로그래머스 : 단체사진찍기 (0) | 2022.06.09 |
[C++] 프로그래머스 : N으로 표현 (0) | 2022.06.01 |