문제: 가장 짧은 문자열과 가장 긴 문자열을 제거한 배열을 리턴
주의: 가장 짧은 문자열의 길이와 가장 긴 문자열의 길이는 같을 수 없다/ 길이가 가장 길거나 짧은 게 여러개라면 나중에 위치한 문자열을 제거
public class Main {
public String[] removeExtremes(String[] arr) {
if (arr.length == 0) return null;
int shortestLen = 20;
int longestLen = 0;
int shortestIdx = 0;
int longestIdx = 0;
for (int i = 0; i < arr.length; i++) {
if (arr[i].length() <= shortestLen) {
shortestLen = arr[i].length();
shortestIdx = i;
}
if (arr[i].length() >= longestLen) {
longestLen = arr[i].length();
longestIdx = i;
}
}
String[] result = new String[arr.length - 2];
int curIndex = 0;
for (int i = 0; i < arr.length; i++) {
if (i != shortestIdx && i != longestIdx) {
result[curIndex] = arr[i];
curIndex++;
}
}
return result;
}
}
흐름
1. 빈 배열일 때 null 리턴 2. 최단,최장 길이를 담을 변수와 최단, 최장의 인덱스를 담을 변수 선언 3. for (arr의 길이만큼 반복) { if (arr[i]의 길이가 최단길이보다 같거나 작다면) 최단길이 변수에 arr[i]의 길이를 넣음 최단길이 인덱스에 i를 넣음 if (arr[i]의 길이가 최장길이보다 같거나 크다면) 최장길이 변수에 arr[i]의 길이를 넣음 최장길이 인덱스에 i를 넣음 } 4. 결과 값을 받을 문자열 result선언. 최소,최대를 제외하고 받기 때문에 -2 해줌 5. 배열을 순회하며 result에 최장,최단을 제거한 나머지 문자열을 넣어줌