코드 힌트
- 순위별 최저 랭킹 찾기:
- 1등부터 3등까지 각 순위에 해당하는 참가자를 찾기 위해 랭킹 배열과 참석 여부 배열을 사용합니다. 각 순위에서 참가할 수 있는 최저 랭킹을 찾는 과정이 필요합니다.
- 최저 랭킹 찾기:
- 각 순위에 대해 현재까지 찾은 최저 랭킹보다 더 낮은 랭킹을 가진 참가자를 찾습니다. 이를 위해 attendance 배열에서 참가 중인 인덱스를 검사하고, rank 배열에서 최저 랭킹을 업데이트합니다.
- 결과 계산:
- 각 순위에 따라 인덱스를 사용하여 결과를 계산합니다. 1등은 10000배수, 2등은 100배수, 3등은 1배수로 계산됩니다. 찾은 인덱스에 따라 결과를 누적합니다.
- 참가 상태 업데이트:
- 현재 순위의 참가자를 찾은 후, 그 참가자의 상태를 false로 변경하여 다음 순위를 찾을 때 제외됩니다.
정답은 더보기 클릭
더보기
class Solution {
public int solution(int[] rank, boolean[] attendance) {
int result = 0;
// 1등부터 3등까지 찾기 위한 반복문
for (int i = 1; i <= 3; i++) {
int maxRank = Integer.MAX_VALUE; // 현재까지 찾은 최저 랭킹을 저장
int idx = -1; // 현재까지 찾은 최저 랭킹의 인덱스
// 모든 참가자를 검사하여 현재 순위에 해당하는 최저 랭킹을 찾기
for (int j = 0; j < rank.length; j++) {
// 현재 인덱스가 참가하고 있으며, 랭킹이 maxRank보다 낮으면
if (attendance[j] && maxRank > rank[j]) {
idx = j; // 인덱스를 업데이트
maxRank = rank[j]; // 최저 랭킹을 업데이트
}
}
// 찾은 인덱스의 참가 상태를 false로 변경하여 다음 순위를 찾도록 함
attendance[idx] = false;
// 각 순위에 따라 결과를 계산
if (i == 1) {
result += 10000 * idx; // 1등: 10000배수
} else if (i == 2) {
result += 100 * idx; // 2등: 100배수
} else if (i == 3) {
result += idx; // 3등: 1배수
}
}
return result; // 최종 결과 반환
}
}
'프로그래머스(Java) > Level 0' 카테고리의 다른 글
[프로그래머스] 모스부호 (1) (0) | 2024.08.14 |
---|---|
[프로그래머스] 진료순서 정하기 (0) | 2024.08.14 |
[프로그래머스] 그림 확대 (1) | 2024.08.13 |
[프로그래머스] 정수를 나선형으로 배치하기 (0) | 2024.08.13 |
[프로그래머스] 정사각형으로 만들기 (1) | 2024.08.13 |