-
[프로그래머스] 신고 결과 받기개발공부/코딩테스트 연습문제 2022. 1. 17. 14:20
문제 설명과 제한사항


문제가 길다.
1. id_list : 유저
2. report : 신고 내역 ex) "kuna naku" -> kuna가 naku를 신고
3. k이상 신고가 들어오면 정지 + 신고자(위의 예에서 kuna)에게 메일
4. 메일을 id_list별로 유저들이 몇통을 받는지.
풀이
import java.util.*; class Solution { public int[] solution(String[] id_list, String[] report, int k) { int[] tmp = new int[id_list.length]; int[] answer = new int[id_list.length]; Set<String> set = new HashSet<String>(Arrays.asList(report)); String[] reportSet = new String[set.size()]; Iterator<String> it = set.iterator(); for(int i = 0; i < set.size(); i++){ reportSet[i] = it.next(); } for(int i = 0; i < reportSet.length; i++){ String[] reportSplit = reportSet[i].split(" "); tmp[Arrays.asList(id_list).indexOf(reportSplit[1])]++; } for(int i = 0; i < reportSet.length; i++){ String[] reportSplit = reportSet[i].split(" "); if(tmp[Arrays.asList(id_list).indexOf(reportSplit[1])] >= k){ answer[Arrays.asList(id_list).indexOf(reportSplit[0])]++; } } return answer; } }코드 설명
반복문의 중첩(시간복잡도)를 신경쓰다보니 코드가 더러워짐.
파트는 Iterator 부분을 1
첫번째 반복문을 2
두번째 반복문을 3 으로 가정한다.
0. 선언 : tmp -> 신고된 횟수를 id_list 순서대로 저장
set,reportSet -> 중복방지를 위한 set
1. set으로 중복을 없앤 후 배열로 저장하기 위한 부분.
2. reportSet(중복을 없앤 report)을 " " 기준으로 자름 ex) "kuna naku" -> ["kuna","naku"]
그리고 reportSplit[1] -> 위의 예 naku 에 해당하는 id_list에 인덱스를 가져와서
tmp(신고당한 누적 횟수)에 인덱스에 해당하는 숫자를 ++
그러면 결과적으로 naku가 있는 index 에 신고 횟수가 ++ 됨.
3. 2와 같은 방식으로 신고 횟수를 k와 비교해서 answer에 ++ 해줌
++
생각보다 빠르게 풀렸음.
근데 또 몇일 쉬었다고 Iterator 랑 set 선언이 기억이 안남... 그리고 indexOf는 기억나는데 arrays.asList 까먹음
1. SET : Set<String> a = new HashSet<String>();
-> 배열을 셋으로 : Set<String> a = new HashSet<Strung>(Arrays.asList(배열));
2. Iterator : set에서 데이터를 하나씩 가져오기 위함
Iterator b = a.iterator();
-> b.hasNext() : 보통 while문에서 조건으로 사용됨
-> b.next() : 인자 하나씩 가져옴.
3. indexOf(<T> a) : List에서 a에 해당되는 인덱스를 반환.
List<String> a = new List<String>();
a.indexOf("Kuna"); : "Kuna"가 있는 인덱스를 반환
-> 배열에서의 사용법?
Arrays.asList() : 배열을 리스트로 반환
-> Arrays.asList(배열 b).indexOf("Kuna");
배열 b에서 Kuna가 있는 인덱스를 반환
'개발공부 > 코딩테스트 연습문제' 카테고리의 다른 글
[프로그래머스] Level.2 - 멀쩡한 사각형 (0) 2022.01.18 [프로그래머스] Level.2-124나라의 숫자 (0) 2022.01.18 [프로그래머스] (1차) 다트 게임 (0) 2022.01.13 [프로그래머스] 소수 찾기 (Level.1) (0) 2022.01.13 [프로그래머스] 서울에서 김서방 찾기 (0) 2022.01.11