프로그래머스 java 신고 결과 받기

jieun·2022년 8월 5일
0

java 코테 공부

목록 보기
1/17

해결방법

  1. 한 사람이 같은 사람을 신고하는건 해당 안되기 때문에 중복을 제거하고 공백으로 구분한 2차원 배열 생성 -> str
  2. 신고를 몇 번 당했는지 알 수 있는 배열 생성 -> count
  3. k번 이상 신고당한 사람을 몇 명 신고했는지 알 수 있는 배열 생성 -> result

활용코드

HashSet으로 배열의 중복 제거 후(순서보장x) Array로 다시 변경

import java.util.HashSet;
...
		HashSet<String> hashSet = new HashSet<>();
		for(String item : report){
            hashSet.add(item);
        }
		String[] strArr = hashSet.toArray(new String[0]);

2차원 배열 선언하고 문자열을 공백으로 구분하여 저장

String[][] str = new String[strArr.length][];
for(int i=0; i<strArr.length; i++){
	str[i] = strArr[i].split(" ");
}

문자열 비교 함수

if(str[i][1].equals(id_list[j])) {
	count[j]++;
}

전체코드

import java.util.HashSet;
class Solution {
    public int[] solution(String[] id_list, String[] report, int k) {

        HashSet<String> hashSet = new HashSet<>();
        for(String item : report){
            hashSet.add(item);
        }
        String[] strArr = hashSet.toArray(new String[0]);

        String[][] str = new String[strArr.length][];
        int[] count = new int[id_list.length];
        int[] result = new int[id_list.length];


        for(int i=0; i<strArr.length; i++){
            str[i] = strArr[i].split(" ");
        }

        for(int i=0; i<str.length; i++){
            for(int j=0; j<id_list.length; j++){
                if(str[i][1].equals(id_list[j])) {
                    count[j]++;
                }
            }
        }

        for(int i=0; i<count.length; i++){
            if(count[i]>=k){
                for(int j=0; j<str.length; j++){
                    if(str[j][1].equals(id_list[i])) {
                        for (int n=0; n<id_list.length; n++){
                            if(str[j][0].equals(id_list[n])) {
                                result[n]++;
                            }
                        }
                    }
                }
            }
        }

        return result;
    }
}
profile
개발새발 블로그

0개의 댓글