본문 바로가기

신고 결과 받기

@정소민fan2023. 6. 28. 16:19

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

레벨 1짜리지만 머리가 상당히 아팠다

내가 신고한 사람이 정해진 신고 횟수를 넘겨 정지되었으면 통지를 받는데, 내가 받은 통지 횟수를 리턴해줘야 한다.

예를 들어 내가 3명을 신고했는데, 2명이 정지되었으면 2를 리턴받는 것이다.

각 사람마다 누구를 신고했는지도 알아야 하고 몇번 신고당했는지도 알아야 한다.

 

먼저 중요한건 한 사람이 특정한 사람을 여러번 신고해도 신고 횟수는 한번이라는 것

따라서 HashSet을 이용해 중복 제거를 해서 overlapRemove 리스트에 넣어 주었다

overlapRemove 배열은 "(신고한 사람) (신고당한 사람)" 으로 이루어져 있으므로 공백 문자를 기준으로 나누어 주자

이 코드에서 li[0]은 신고한 사람, li[1]은 신고당한 사람이다

reportList는 누가 누구를 신고했는지 담아주는 map 이다

중복되는 배열은 제거되었으므로 key값 li[0]를 통해 ArrayList를 꺼내어 li[1]을 배열을 추가해주고 다시 넣어주자

reporNum은 누가 몇 번 신고당했는지 담아주는 map이다

따라서 li[1]을 key 값으로 하여 정수형 value를 꺼내어 1을 추가하고 다시 넣어준다

 

이제 마지막으로 통지받은게 몇번인지 알아낼 차례다

id_list를 key 값으로 reportLIst배열의 ArrayList를 꺼내어 reportNum의 key값으로 넣어주어 신고당한 횟수를 value값으로 가져온다

그리고 그 값이 k값 보다 큰지 비교하여 크면 answer값에 1을 추가한다

'코딩 테스트 > JAVA' 카테고리의 다른 글

공원 산책  (0) 2023.06.28
정소민fan
@정소민fan :: 코딩은 관성이야

코딩은 관성적으로 해야합니다 즐거운 코딩 되세요

목차