문제
나의 생각
하나의 배열의 만들고 emergency 값을 복사를 하고, 복사를 한 배열을 정렬한다.
이후 정렬한 값과 emergency 값을 비교해서 같을때의 index 넘버를 가지고 answer 값을 지정하는 방식으로 접근.
나의 답안
public static int[] solution(int[] emergency) {
int[] answer = new int[emergency.length];
int[] temp = new int[emergency.length];
System.arraycopy(emergency,0,temp,0, emergency.length);
int num = emergency.length;
Arrays.sort(temp);
for (int i = 0; i < emergency.length; i++) {
for(int j =0 ; j < emergency.length; j ++){
if (temp[i] == emergency[j]){
answer[j] = num--;
System.out.println(Arrays.toString(answer));
break;
}
}
}
return answer;
}
다른 답안
각 배열에 자신보다 작은 수를 카운트하면 원하는 답이 나올 수 있다.
class Solution {
public int[] solution(int[] emergency) {
int[] answer = new int[emergency.length];
for(int i = 0; i < answer.length; i++){
if(answer[i] != 0){
continue;
}
int idx = 1;
for(int j = 0; j < answer.length; j++){
if(emergency[i] < emergency[j]){
idx++;
}
}
answer[i] = idx;
}
return answer;
}
}
'Programmers 문제풀이 > Lv.0' 카테고리의 다른 글
숨어있는 숫자의 덧셈 (2) (0) | 2023.03.01 |
---|---|
한 번만 등장한 문자 (0) | 2023.03.01 |
k의 개수 (0) | 2023.03.01 |
가까운 수 (0) | 2023.03.01 |
2차원으로 만들기 (0) | 2023.03.01 |