울음참고 개발공부
article thumbnail
728x90

 

 

프로그래머스

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

programmers.co.kr

 


 

[ 문제 이해하기 ]

 

 

 

 

 

  • rank[] 배열에 있는 원소 - 각 학생의 등수 ( 1등, 2등 ,,, )  
  • 빨간색으로 적은 수 - 각 학생의 번호 ( 0번 학생, 1번 학생 ,,, ) 

 

 

입출력 예 #1 번에서 true 값만 모으면 [ 7,2,5,4 ] 이다 해당 등수를 정렬하면 [ 2,4,5,7 ] 이된다.

 

여기서 3명을 선발한다고 하였으므로 등수는 [ 2,4,5 ] 가 남는다.

 

[ 2,4,5 ] 에 해당하는 학생의 번호수를 확인하면 각 원소의 아래 숫자만 확인하면 된다. -> [ 2, 4, 3 ]

 

 

return 값은 등수(rank)가 아닌, 번호수(빨간색 숫자)로 확인하기 때문에 다음과 같이 계산된다.

 

( 2*10000 ) + ( 4 * 100) + 3 = 20403

 

 


 

 

import java.util.*;

class Solution {
    public int solution(int[] rank, boolean[] attendance) {
        int answer = 0;
        Map<Integer, Integer> map = new HashMap<>();
        
        for(int i=0; i<rank.length; i++){
            if(attendance[i]){
                map.put(rank[i],i);   
            }
        }
        
        List<Integer> keyList = new ArrayList<>(map.keySet());
        List<Integer> valueList = new ArrayList<>();
        
        Collections.sort(keyList);
        int a = 0;
        
        for(int i=0; i<keyList.size(); i++){
            a = keyList.get(i);
            valueList.add(map.get(a));
        }
        
        answer = valueList.get(0)*10000 + valueList.get(1)*100 + valueList.get(2);
        
        return answer;
    }
}
728x90
profile

울음참고 개발공부

@메각이

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!