문제: 코딩테스트 연습 - 진료순서 정하기 | 프로그래머스 스쿨 (programmers.co.kr)
문제설명
외과의사 머쓱이는 응급실에 온 환자의 응급도를 기준으로 진료 순서를 정하려고 합니다. 정수 배열 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] |
나의 문제 풀이
class Solution {
public int[] solution(int[] emergency) {
int[] answer = new int[emergency.length];
for (int i = 0; i < emergency.length; i++) {
for (int j = 0; j < emergency.length; j++) {
if(emergency[i] < emergency[j]) {
answer[i]++;
}
}
answer[i]++;
}
return answer;
}
}
다른 사람의 문제풀이
import java.util.*;
class Solution {
public int[] solution(int[] emergency) {
Map<Integer, Integer> map = new HashMap<>();
int[] emergencySort = Arrays.copyOfRange(emergency, 0, emergency.length);
Arrays.sort(emergencySort);
int size = emergency.length;
for(int i = 0; i<emergencySort.length; i++){
int e = emergencySort[i];
map.put(e, size-i);
}
for(int i = 0; i<emergency.length; i++){
emergency[i] = map.get(emergency[i]);
}
return emergency;
}
}
느낀점
다른사람 풀이의 Map을 이용한 방법이 배열의 크기가 커질 수록 이중 반복문보다 해시맵을 사용하는게 효과적이기 때문에 좋은 방법인것 같다!
'코딩테스트 연습 > 프로그래머스 LV.0' 카테고리의 다른 글
[프로그래머스] Lv.0 k의 개수 - 자바(Java) (0) | 2024.04.11 |
---|---|
[프로그래머스] Lv.0 중복된 문자 제거 - 자바(Java) (0) | 2024.04.10 |
[프로그래머스] Lv.0 개미 군단 - 자바(Java) (0) | 2024.04.08 |
[프로그래머스] Lv.0 모스부호 (1) - 자바(Java) (2) | 2024.04.07 |
[프로그래머스] Lv.0 가위 바위 보 - 자바(Java) (2) | 2024.04.06 |