관리 메뉴

여름 언덕에서 배운 것

[0단계/2점]전국 대회 선발 고사 본문

가랑비에 옷 젖는 줄 모른다 💻/🌰코테문풀_꾸준히

[0단계/2점]전국 대회 선발 고사

잔뜩 2025. 2. 6. 00:09
import java.util.*;
class Solution {
    public int solution(int[] rank, boolean[] attendance) {
    
        Map<Integer,Integer> studentRanks = new HashMap<>();
        for(int i=0; i< rank.length;i++){
            if(attendance[i]){
                studentRanks.put(rank[i],i); // 참여가 가능한 학생의 등수와, 반번호를 Map에 저장
            }
        }
        // 참여 가능한 등수만 꺼내서 오름차순하여 배열로 만들어 준 다음에
        List<Integer>keySet = new ArrayList<>(studentRanks.keySet()); 
        Collections.sort(keySet);
        int[] newRanking = keySet.stream().mapToInt(Integer::intValue).toArray();
 		// 등수에 해당하는 반 번호를 불러와 값을 곱해준다.
        int answer = 0;
        answer = 10000*(studentRanks.get(newRanking[0])) + 100 *(studentRanks.get(newRanking[1]))  + (studentRanks.get(newRanking[2])) ;
        return answer;
    }
}

 

다른 사람 풀이

import java.util.ArrayList;
import java.util.TreeMap;

class Solution {
    public int solution(int[] rank, boolean[] attendance) {
        TreeMap<Integer, Integer> tree = new TreeMap<>();
        for (int i = 0; i < rank.length; i++) {
            if (attendance[i] == true) tree.put(rank[i], i);
        }

        ArrayList<Integer> list = new ArrayList<>();
        for (Integer key : tree.keySet()) {
            if (list.size() == 3) break;
            list.add(tree.get(key)); 
        }
        return list.get(0) * 10000 + list.get(1) * 100 + list.get(2);
    }
}

TreeMap은정렬된 상태를 유지 , 자동으로 key 값을 오름차순해준다

728x90