진료 순서 정하기(with.Java)
“진료 순서 정하기” 문제에 대하여 알아본 글입니다.
코딩 테스트 문제를 풀며, 풀었던 문제에 대한 회고와 다른 풀이 방법을 알아보며, 알아가고자 합니다.
문제에 대해 먼저 알아보겠습니다.
문제
외과의사 머쓱이는 응급실에 온 환자의 응급도를 기준으로 진료 순서를 정하려고 합니다.
정수 배열 emergency가 매개변수로 주어질 때 응급도가 높은 순서대로 진료 순서를 정한 배열을 return하도록 solution 함수를 완성해주세요.
제한사항
중복된 원소는 없습니다.
1 ≤ emergency의 길이 ≤ 10
1 ≤ emergency의 원소 ≤ 100
입출력 예시
emergency | result |
---|---|
[3, 76, 24] | [3, 1, 2] |
[1, 2, 3, 4, 5, 6, 7] | [7, 6, 5, 4, 3, 2, 1] |
[30, 10, 23, 6, 100] | [2, 4, 3, 5, 1] |
문제에 대한 나의 풀이
import java.util.*;
class Solution {
public int[] solution(int[] emergency) {
int[] answer = new int[emergency.length];
Arrays.fill(answer, 1);
for(int value : emergency){
for(int i = 0; i < emergency.length; i++){
if(value > emergency[i]){
answer[i]++;
}
}
}
return answer;
}
}
풀이 설명
solution: 긴급 상황에 대한 우선순위를 계산하는 함수입니다.
입력: emergency - 긴급 상황을 나타내는 정수 배열.
출력: 긴급 상황에 대한 우선순위를 나타내는 정수 배열.
사용된 함수 소개:
Arrays.fill(answer, 1);: Arrays 클래스의 fill 메서드는 배열을 특정 값으로 채우는 데 사용됩니다.
이 경우에는 answer 배열을 1로 초기화합니다.
개선 가능한 점:
성능 개선: 현재 코드는 이중 반복문을 사용하여 각 긴급 상황에 대한 우선순위를 계산합니다.
이는 긴급 상황이 많아질수록 성능에 영향을 미칠 수 있습니다.
성능을 개선하기 위해 다른 알고리즘을 고려할 수 있습니다.
코드 모듈화: 현재 코드는 한 함수에 모두 구현되어 있습니다.
함수를 작은 단위로 나누어 코드의 모듈화를 고려할 수 있습니다.
예를 들어, 우선순위를 계산하는 부분을 별도의 함수로 분리할 수 있습니다.
자료구조 활용: 긴급 상황에 대한 우선순위를 계산하는 방식을 효율적인 자료구조로 변경하여 성능을 향상시킬 수 있습니다.
예를 들어, 힙(Heap) 자료구조를 사용하면 더 효율적인 우선순위 계산이 가능합니다.
이러한 개선점을 고려하여 코드를 더욱 효율적으로 만들 수 있습니다.