전국 대회 선발 고사
2023. 5. 24. 23:22ㆍProgrammers/Java
문제
결과
풀이
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
32
33
|
import java.util.ArrayList;
import java.util.Arrays;
class Solution {
public int solution(int[] rank, boolean[] attendance) {
ArrayList<Integer> array = new ArrayList<>();
for(int i=0; i<attendance.length; i++) {
if(attendance[i]) { //출석이 가능한 학생들
array.add(i);
}
}
int[] rank2 = new int[array.size()];
for(int i=0; i<array.size(); i++){
rank2[i] = rank[array.get(i)];
}
array.clear();
Arrays.sort(rank2);
for(int i=0; i<3; i++) {
for(int j=0; j<rank.length; j++) {
if(rank2[i]==rank[j]) {
array.add(j);
}
}
}
return array.get(0) * 10000 + array.get(1)*100 + array.get(2);
}
}
|
cs |
1. 출석 가능한 학생들의 인덱스를 담을 ArrayList를 만듦 : 몇 명인지 모르니까 ArrayList
2. 출석 가능한 학생들의 인원 수만큼의 크기인 배열 rank2를 만듦
3. 학생들의 등수가 담긴 배열과 출석 여부 배열의 순서가 같음
-> 같은 학생에 대한 등수와 출석 여부
3-1. rank2[i] = rank[array.get(i)]
등수가 담긴 배열에 출석여부 인덱스를 넣으면 출석이 가능한 학생들의 등수를 알 수 있음
4. 객체를 재활용하기 위해 array.clear()로 비워줌
5. 출석가능한 학생의 순번을 알기 위해 if(rank2[i] == rank[j])
출석가능한 학생만 모여있는 배열과 모든 학생이 있는 배열을 비교했을 때
같은 학생이 나오는 경우 모든 학생이 있는 배열에서의 인덱스(j)를 알면 순번을 알 수 있음
'Programmers > Java' 카테고리의 다른 글
크레인 인형뽑기 게임 (0) | 2023.09.04 |
---|---|
마법의 엘리베이터 (0) | 2023.08.04 |
x 사이의 개수 (2) | 2023.05.17 |
qr code (2) | 2023.05.13 |
폰켓몬 (0) | 2023.01.29 |