나의 풀이.
처음에는 rank 등수로 연산하는 문젠줄 알고 음.. 했다가 위치로 연산하는거 보고 앗차차.. 처음부터 문제파악을 잘못했었다..
rank의 값과 인덱스 번호를 저장하는 2차원 배열을 만들어 주고 rank가 작은 값이 순위가 높으거니까 오름차순으로 sort
이후 새로운 ArrayList를 만들어 attendece에 2차원배열의 [n][1]에 저장되어 있는 인덱스 값을 넣고 true일때 list에 add
list 크기가 3이 되면 종료 할 수 있게 해주고 연산해 answer에 더해준다
import java.util.ArrayList;
import java.util.Arrays;
class Solution {
public int solution(int[] rank, boolean[] attendance) {
int answer = 0;
int[][] rankIndex = new int[rank.length][2];
for (int i = 0; i < rank.length; i++) {
rankIndex[i][0] = rank[i];
rankIndex[i][1] = i;
}
Arrays.sort(rankIndex, (a, b) -> a[0] - b[0]);
ArrayList result = new ArrayList<>();
for (int i = 0; i < attendance.length; i++) {
if (attendance[rankIndex[i][1]]) {
result.add(rankIndex[i][1]);
}
if (result.size() == 3) {
break;
}
}
int first = result.get(0) * 10000;
int second = result.get(1) * 100;
int third = result.get(2);
answer = first + second + third;
return answer;
}
}
'CODING TEST' 카테고리의 다른 글
백준 1254번 - 팰린드롬 만들기 (0) | 2023.05.29 |
---|---|
프로그래머스 - 덧칠하기 (0) | 2023.05.26 |
프로그래머스 - 문자열 안에 문자열 (0) | 2023.05.22 |
백준 5613번 - 계산기 프로그램 (0) | 2023.05.22 |
프로그래머스 - 배열 회전시키기 (0) | 2023.05.22 |