<문제 제시>
<문제설명>
외과의사 머쓱이는 응급실에 온 환자의 응급도를 기준으로 진료 순서를 정하려고 합니다.
정수 배열 emergency가 매개변수로 주어질 때 응급도가 높은 순서대로 진료 순서를 정한 배열을
return하도록 solution 함수를 완성해주세요.
<예시 입출력>
<문제 해결 과정>
처음에는 응급도 배열에서 최소값을 [0]번째 인덱스 값으로 초기화 후 rank를 부여하며 찾고자 하였다.
Try 1)
// 오답
int min = Integer.MIN_VALUE;
min = emergency[0];
// 순위의 최대값 = emergency 배열의 길이
int rank = emergency.length;
for(int i = 0; i < rank; i++){
// emergency가 min보다 작다면
if(min > emergency[i]){
min = emergency[i];
answer[i] = rank;
rank--;
}
else {
answer[i] = rank;
rank--;
}
}
Solution 1)
배열에서 Arrays.sort()를 통해 바로 정렬할 수도 있지만,
ArrayList()를 통해 정렬하는 방법으로 풀어보았다.
List<Integer> arr = new ArrayList<>();
// * 간단히 배열 요소를 리스트로 넣는 방법
for(int i : emergency) {
arr.add(i);
}
emergency 배열의 값들을 리스트에 옮겨담은 후
// 내림차순 정렬
Collections.sort(arr, Collections.reverseOrder());
내림차순 정렬하였다.
* 오름차순 정렬은 Collections.sort(arr);
for(int i = 0; i < answer.length; i++) {
// 리스트에서 emergency[i] 숫자와 일치하는 인덱스에서 +1을 더한 값을 answer[i]에 대입
// +1을 하는 이유는 인덱스로 접근하였었기때문에 1의 차이가 있음
answer[i] = arr.indexOf(emergency[i])+1;
}
그리고 indexOf를 통해 arr 리스트에서 emergency[i] 숫자와 일치하는 값을 찾아내어
+1을 더한 후 answer배열에 넣는다.
<전체코드>
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class emergency {
public static int[] solution(int[] emergency) {
int[] answer = new int[emergency.length];
List<Integer> arr = new ArrayList<>();
// * 간단히 배열 요소를 리스트로 넣는 방법
for(int i : emergency) {
arr.add(i);
}
// 내림차순 정렬
Collections.sort(arr, Collections.reverseOrder());
for(int i = 0; i < answer.length; i++) {
// 리스트에서 emergency[i] 숫자와 일치하는 인덱스에서 +1을 더한 값을 answer[i]에 대입
// +1을 하는 이유는 인덱스로 접근하였었기때문에 1의 차이가 있음
answer[i] = arr.indexOf(emergency[i])+1;
}
return answer;
}
public static void main(String[] args) {
int[] emergency = {3, 76, 24};
System.out.println(Arrays.toString(solution(emergency)));
}
}
알고리즘 문제 중 많은 편인 정렬 문제에서 Collections.reverseOrder(), indexOf() 등의 메서드를 사용하여 더 효과적으로 풀이할 수 있음을 알 수 있었다.
문제링크)
https://school.programmers.co.kr/learn/courses/30/lessons/120835
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
'Algorithms > 프로그래머스' 카테고리의 다른 글
[프로그래머스] '모스부호 (1)' - Java (0) | 2023.04.28 |
---|---|
[프로그래머스] '순서쌍의 개수' - Java (0) | 2023.04.27 |
[프로그래머스] '옹알이 (1)' - Java (0) | 2023.04.26 |
[프로그래머스] '대문자와 소문자' - Java (0) | 2023.04.26 |
[프로그래머스] '배열 뒤집기' - Java (0) | 2023.04.17 |