[Coding test] 0405_no.5 (java)

2020-04-05

Coding test / 0405_no.5

문제설명

유출 x

풀이

package T0405;

import java.util.*;


//25 min
public class t5 {
    public static String[] solution(String[][] dataSource, String[] tags) {
 
        int size[][] = new int[dataSource.length][2];
        
        for(int i=0; i<size.length; i++)
        	size[i][1] = i;
        
        String tg = "";
        for(int i=0;i<tags.length; i++)
        	tg += tags[i];
        
        for(int i=0;i<dataSource.length; i++) {
        	for(int j=1; j<dataSource[i].length; j++) {
        		if(tg.contains(dataSource[i][j]))
        			size[i][0]++;
        	}
        }

        Arrays.sort(size, new Comparator<int[]>() {
        	@Override
        	public int compare(int a[], int b[]) {
        		if(a[0] == b[0])
        			return a[1] - b[1];
        		else
        			return b[0]-a[0];
        	}
        });

        String ans = "";

        for(int i=0; i<size.length; i++) {
        	if(size[i][0] != 0) {
        		int idx = size[i][1];
        		
        		ans += dataSource[idx][0] + ",";
        	}
        }
        
        String[] answer = ans.split(",");
        String[] realan = new String[10];
        
        if(answer.length >10) {
        	for(int i=0 ;i<10; i++)
        		realan[i] = answer[i];
        	
        	return realan;
        }
        
        return answer;
    }
    
    public static void main(String[] args) {
		String s[][] = doc1,
				{"doc2", "t0", "t2", "t3"},
			    {"doc3", "t1", "t6", "t7"},
			    {"doc4", "t1", "t2", "t4"},
			    {"doc5", "t6", "t100", "t8"}};
		
		String t[] = {"t1", "t2", "t3"};
		
		solution(s,t);

	}
}

후기 (25min)

이것 또한 테케는 나왔으나 정답인지는 모르겠는 문제 중 하나…

일단 10개 이상이면 10만 출력하라는 조건은 만족시켰고

그 외에 doc1 부터 doc…까지 태그를 가지고 있는지 비교해줬다.

이 부분이 약간 야매인게, tag 의 t1t2t3을 string에 넣어버리고 doc이 tag를 포함하면 +1을 시켜주는 방식으로….ㅎ 진행했다

그리고 tag를 많이 가진 순으로 compare해줬고 tag 개수가 같다면 doc 이름의 오름차순으로 정렬해줬다

또한, 문자열의 배열로 return 해야했기때문에 전부 ,(컴마)를 넣어주고 split 해서 return 했으며

split한 문서가 10개 이하면 바로 return 아닌 경우에는 10개만 넣어서 따로 return 해주었다