티스토리 뷰

문제

2019 카카오 인턴십 - 튜플

 

코딩테스트 연습 - 튜플

"{{2},{2,1},{2,1,3},{2,1,3,4}}" [2, 1, 3, 4] "{{1,2,3},{2,1},{1,2,4,3},{2}}" [2, 1, 3, 4] "{{4,2,3},{3},{2,3,4,1},{2,3}}" [3, 2, 4, 1]

programmers.co.kr


풀이

  • 주어진 튜플에 많이 등장하는 순서대로 숫자 배열을 만들어 리턴해야한다
  • 튜플에 중복이 허용되지 않기 때문에 map에 key값으로 튜플의 원소 값을 넣고 value로 빈도수를 계산해 정렬해서 사용했다
  • sortByValue()는 map의 value를 기준으로 내림차순으로 정렬하여 반환하는 함수이다
  • Map.Entry<K, V> : key와 value로 하나의 쌍을 이루는 map entry자료형
  • map.entrySet() : key와 value를 묶어 Set 형식으로 반환한다
public static int[] solution(String s) {
		
        HashMap<String, Integer> map = new HashMap<String, Integer>();
        String[] arr = s.split(",");
        
        for(int i=0; i<arr.length; i++) {
        	arr[i] = arr[i].replace("{", "");
        	arr[i] = arr[i].replace("}", "");
        	map.put(arr[i], map.getOrDefault(arr[i], 0)+1);
        }
        
        List<Map.Entry<String, Integer>> result = sortByValue(map);
        
        int[] answer = new int[map.size()];
        for(int i=0; i<result.size(); i++) 
        	answer[i] = Integer.parseInt(result.get(i).getKey());

        return answer;
}
	
// [2=4, 1=3, 3=2, 4=1] 반환
static List<Map.Entry<String, Integer>> sortByValue(HashMap<String, Integer> map) {
	
    	List<Map.Entry<String, Integer>> entries = new LinkedList<Map.Entry<String,Integer>>(map.entrySet());
	Collections.sort(entries, (o1, o2)-> o2.getValue().compareTo(o1.getValue()));
	
    	return entries;
}
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함