728x90
[ 문제 이해하기 ]
- 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
'코테연습 > 프로그래머스' 카테고리의 다른 글
코딩테스트 연습 > SELECT > 조건에 부합하는 중고거래 댓글 조회하기 MySQL (0) | 2024.01.26 |
---|---|
코딩테스트 연습 > SELECT > 오프라인/온라인 판매 데이터 통합하기 MySQL (0) | 2024.01.24 |
코딩 기초 트레이닝 > 문자열 묶기 Java #getOrDefault() (0) | 2023.11.20 |
⭐ 코딩 기초 트레이닝 > 무작위로 K개의 수 뽑기 Java (0) | 2023.11.20 |
코딩 기초 트레이닝 > 배열 만들기 6 (0) | 2023.11.09 |