본문 바로가기

오답노트/백준알고리즘(Java&Python)

프로그래머스_신고결과받기(Java)

서두

 

https://programmers.co.kr/learn/courses/30/lessons/92334

 

코딩테스트 연습 - 신고 결과 받기

문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의

programmers.co.kr

 

 

프로그래머스의 코딩테스트 신고결과받기를 진행해봤는데

너.무.어렵고 어떻게 해야할지 감을 못잡겠어서 우선 다른 블로그에서 어떻게 했는지 참고만 하려고 했다.

 

그런데 난 여전히 모르는게 많았고 다른분들이 코딩한 방법이 너무 놀라워서 다른분들의 오픈소스를 보고 공부를 먼저 해보기로했다.

 

참고한 오픈소스 사이트 

 

https://velog.io/@gombibi/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%8B%A0%EA%B3%A0-%EA%B2%B0%EA%B3%BC-%EB%B0%9B%EA%B8%B0

 

[프로그래머스/2022 KAKAO BLIND] 신고 결과 받기

신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다.각 유저는 한 번에 한 명의 유저를 신

velog.io

 

분석

 

public int [ ] solution(String [ ]  id_list, String [ ] report, int k )

 

파라미터를 int [ ] 배열로 받는 메서드

 

 

report = Arrays.stream(report).distinct().toArray(String[]::new);

 

Stream배열은 컬렉션(List, Set, Map)으로 원하는 값을 얻을 때 for문 도배를 방지하기 위해 나온 개념이다. 

아주 유용하니 공부해둔다. 

stream(report)로 reoprt에 중복을 제거시킨 후 (distinct) toArray로 다시 값을 배열로 넣어주었다.

 

 

https://wakestand.tistory.com/419

 

자바 스트림(Stream) 예제부터 사용법까지 정리

자바에서 스트림이라고 하면 대부분 엄청나게 어려운 기술인 줄 알고 시작도 전에 포기하는 경우가 많은데 스트림은 엄청 간단하고 유용한 기술이다 다만 설명하는 사람들이 쉬운 걸 너무 어렵

wakestand.tistory.com

 

 

Map<String, Integer> result = new LinkedHashMap();
Map<String, ArrayList<String>> reportMap = new HashMap<>();

 

HashMap() 과 거의 동일하나 LinkedHashMap( ) 은 키의 순서를 보장한다.

return 배열은 id_list에 담긴 id 순서대로 각 유저가 받은 결과와 메일수를 담아야한다고 했으니 LinkedHashMap( ) 을 사용하는 것이 맞다. 그리고 result.put(String, Integer) 형식으로 값을 추가해주었다.

 

 

String[] arrReport = report[i].split(" ");

 

split(" ") :공백으로 문자열을 구분해주는 방식

 

 

https://crazykim2.tistory.com/549

 

[JAVA] 문자열을 배열로 자르는 메서드 split에 대해서 알아봅시다

안녕하세요 프로그래밍을 하다보면 문자열을 특정 기준에 따라 잘라서 보고 싶은 경우가 있습니다 그 경우 String 기본 메서드인 split를 사용하여 자를 수가 있습니다 이번 포스팅에서는 split에

crazykim2.tistory.com

 

 

String[] arrReport = report[i].split(" ");
String reporter = arrReport[0];
String target = arrReport[1];

 

arrReport라는 배열에 reporter와 target을 정리하기 위해 arrReport[0]과 arrReport[1]의 방식으로 정리해주었다.

 

 

for (String key : reportMap.keySet())

 

향상된 for문

https://java119.tistory.com/107

 

[Java] 향상된,개선된 for 문 개념,문법 총 정리

for each문 , 개선된 for문 , 향상된 for문 다양하게 부르지만 본문에선 개선된 for문이라 명칭 하겠습니다. 개선된 for 문 조건 1.JDK 1.5 이상 2.사용할 변수는 지역변수로 인식된다. (For문 안에서 사

java119.tistory.com

https://dpdpwl.tistory.com/138