문제설명
외과의사 머쓱이는 응급실에 온 환자의 응급도를 기준으로 진료 순서를 정하려고 합니다. 정수 배열 emergency가 매개변수로 주어질 때 응급도가 높은 순서대로 진료 순서를 정한 배열을 return하도록 solution 함수를 완성해주세요.
제한사항
- 중복된 원소는 없습니다.
- 1 ≤ emergency의 길이 ≤ 10
- 1 ≤ emergency의 원소 ≤ 100
입출력 예
입출력 예 설명
입출력 예 #1
- emergency가 [3, 76, 24]이므로 응급도의 크기 순서대로 번호를 매긴 [3, 1, 2]를 return합니다.
입출력 예 #2
- emergency가 [1, 2, 3, 4, 5, 6, 7]이므로 응급도의 크기 순서대로 번호를 매긴 [7, 6, 5, 4, 3, 2, 1]를 return합니다.
입출력 예 #3
- emergency가 [30, 10, 23, 6, 100]이므로 응급도의 크기 순서대로 번호를 매긴 [2, 4, 3, 5, 1]를 return합니다.
코드 설명
int len = emergency.length;
int[] answer = new int[len];
먼저 emergency의 길이 만큼의 answer 배열을 만들어줍니다.
이제부터 입출력 예1로 예시를 들어보곘습니다.
emergency : [3, 76, 24]
answer : [0,0,0]
for(int i = 0; i < len; i++) {
answer[i] = 1;
}
그 후 answer의 모든 값을 1로 초기화 해줍니다.
emergency : [3, 76, 24]
answer : [1,1,1]
for(int i = 0; i < len; i++) {
for(int j = 0; j < len; j++) {
if(emergency[i] < emergency[j]) {
answer[i]++;
}
}
}
이중 for문을 이용하여 자기 자신과 다른 값들을 비교해주면서 자신의 값이 다른 값보다 작을 경우 +1를 해줍니다.
첫 번째 반복문에서 i가 0일 때, 안쪽 반복문은 j가 0, 1, 2일 때를 순회하게 됩니다.
- i가 0일 때, j가 0일 때
- emergency[0]은 3이고, emergency[0]과 emergency[0]을 비교합니다. 자기 자신과의 비교이므로 패스합니다.
- i가 0일 때, j가 1일 때
- emergency[0]은 3이고, emergency[1]은 76입니다. 이때 emergency[0]이 emergency[1]보다 작으므로 answer[0]을 증가시킵니다. 따라서 answer[0]은 2가 됩니다.
- i가 0일 때, j가 2일
- emergency[0]은 3이고, emergency[2]는 24입니다. 이때 emergency[0]이 emergency[2]보다 작으므로 answer[0]을 증가시킵니다. 따라서 answer[0]은 3이 됩니다.
이제 i가 1일 때, j가 0, 1, 2일 때를 순회합니다. i가 2일 때에도 동일한 과정으로 진행이 됩니다!
소스코드&결과
코드
class Solution {
public int[] solution(int[] emergency) {
int len = emergency.length;
int[] answer = new int[len];
for(int i = 0; i < len; i++) {
answer[i] = 1;
}
for(int i = 0; i < len; i++) {
for(int j = 0; j < len; j++) {
if(emergency[i] < emergency[j]) {
answer[i]++;
}
}
}
return answer;
}
}
결과
'Coding Test > 프로그래머스' 카테고리의 다른 글
[Java] 배열의 길이를 2의 거듭제곱으로 만들기 (0) | 2024.04.03 |
---|---|
[Java] 모스부호(1) (4) | 2024.03.19 |
[Java] 문자열이 몇 번 등장하는지 세기 (0) | 2024.03.18 |
[Java] 문자열 뒤집기 (0) | 2024.03.17 |
[Java] 문자열 잘라서 정렬하기 (0) | 2024.03.13 |