본문으로 바로가기

 

문제보기

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

 

프로그래머스

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

programmers.co.kr

 

나의 풀이

public class Test {
	public int[] solution(String s) {
		
		
		s = s.substring(1, s.length());
		ArrayList<String> list = new ArrayList<>();
		
		String tmp = "";
		
		for(int i = 0; i < s.length(); i++) {
			if(s.charAt(i) == '{') {
				
			} else if(s.charAt(i) == '}') {
				list.add(tmp);
				tmp = "";	
				i++;
			} else {
				tmp += s.charAt(i);
			}
		}
		
		
 
		HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
		
		for(int i = 0; i < list.size(); i++) {
			String[] str = list.get(i).split(",");
			for(int j = 0; j < str.length; j++) {
				int chk = Integer.parseInt(str[j]);
				map.put(chk, map.getOrDefault(chk, 0)+1);
			}
		}
	 
		List<Map.Entry<Integer, Integer>> entryList = new LinkedList<Map.Entry<Integer,Integer>>(map.entrySet());
		entryList.sort(new Comparator<Map.Entry<Integer, Integer>>() {

			@Override
			public int compare(Entry<Integer, Integer> o1, Entry<Integer, Integer> o2) {
				return o2.getValue() - o1.getValue();
			}
		});
		
		int[] answer = new int [map.size()];
		int cnt = 0;
		for(Map.Entry<Integer, Integer> entry : entryList) {
			answer[cnt] = entry.getKey();
			System.out.println(cnt + " : " + answer[cnt]);
			cnt++;
		}
        return answer;
    
	}
	
	public static void main(String[] args) {
		
		Test t = new Test();
		String s = "{{2},{2,1},{2,1,3},{2,1,3,4}}";
		int[] arr = t.solution(s);
		for(int i : arr) {
			System.out.println(i);
		}
		
	}
}

 

 

** HashMap value 값으로 정렬하기

1. 오름차순

	HashMap<String, Integer> map = new HashMap<>();
		
		map.put("a", 5);
		map.put("b", 1);
		map.put("c", 0);
		map.put("d", 6);
		
		List<Map.Entry<String, Integer>> entryList = new LinkedList<Map.Entry<String, Integer>>(map.entrySet());
		
		
		//오름차순
		entryList.sort(new Comparator<Map.Entry<String, Integer>>() {

			@Override
			public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
				return o1.getValue() - o2.getValue();
			}
		});
		
		for(Map.Entry<String, Integer> entry : entryList) {
			System.out.println(entry.getKey() + " : " + entry.getValue() );
		}

 

2. 내림차순

    entryList.sort(new Comparator<Map.Entry<String, Integer>>() {
        @Override
        public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
            return o2.getValue() - o1.getValue();
        }
    });

 

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

[JAVA] 3진법 뒤집기  (0) 2022.09.16
문자열 내 마음대로 정렬하기  (0) 2022.08.24
올바른 괄호 - java  (0) 2022.08.16
신고 결과 받기  (0) 2022.08.13
로또의 최고 순위와 최저 순위  (0) 2022.06.12