주니어 기초 코딩공부/JAVA_programmers_코딩테스트
진료 순서 정하기_programmers_lev00
jju_developer
2022. 12. 13. 15:00
728x90
<코딩 테스트>
외과의사 머쓱이는 응급실에 온 환자의 응급도를 기준으로 진료 순서를 정하려고 합니다. 정수 배열 emergency가 매개변수로 주어질 때 응급도가 높은 순서대로 진료 순서를 정한 배열을 return하도록 solution 함수를 완성해주세요.
<나의 풀이 과정>
우선 배열 두개를 생각했습니다.
정답을 답을 배열 하나, copy를 하고 sort를 한 배교 배열 하나.
비교 배열 copy를 sort로 정렬 후, emergency의 배열의 개수 를 해당 배열의 인덱스를 빼주어
큰수가 먼저 answer 배열에 담길 수 있도록 코딩하였습니다.
<나의 풀이 코드>
import java.util.Arrays;
class Solution {
public int[] solution(int[] emergency) {
int[] answer = new int[emergency.length];
int[] copy = Arrays.copyOf(emergency, emergency.length);
Arrays.sort(copy);
for (int i = 0; i < emergency.length; i++) {
for (int j = 0; j < copy.length; j++) {
if (emergency[i] == copy[j])
answer[i] = emergency.length - j;
}
}
return answer;
}
}
<다른사람 풀이 1>
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;
}
}
<다른사람 풀이 2>
import java.util.*;
class Solution {
public int[] solution(int[] emergency) {
int len = emergency.length;
int[] answer = new int[len];
Map<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < len; i++) {
map.put(emergency[i], i);
}
Arrays.sort(emergency);
for (int i = len-1; i >= 0; i--) {
answer[map.get(emergency[i])] = len - i;
}
return answer;
}
}
728x90