728x90
문제: 가장 짧은 문자열과 가장 긴 문자열을 제거한 배열을 리턴
주의: 가장 짧은 문자열의 길이와 가장 긴 문자열의 길이는 같을 수 없다/ 길이가 가장 길거나 짧은 게 여러개라면 나중에 위치한 문자열을 제거
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에 최장,최단을 제거한 나머지 문자열을 넣어줌
728x90
'Java > 연습문제' 카테고리의 다른 글
[JAVA] 나눗셈, 나머지 연산자 없이 나머지 구하기 (0) | 2022.10.21 |
---|---|
[JAVA] 이전 요소들의 합보다 큰가? (0) | 2022.10.21 |
[JAVA] 연속되는 홀수 사이에 '-'넣기 (0) | 2022.10.21 |
[JAVA] 문자열 체크 (0) | 2022.10.21 |
[JAVA] 두 칸의 공백을 한 칸으로 (0) | 2022.10.21 |
댓글