230328 데일리코딩

허크·2023년 3월 28일
0
public String[] removeExtremes(String[] arr) {
    // TODO:
    // edgecase: 공백 처리
    if (arr.length == 0) {
      return null;
    }
    // 필요한 요소 선언
    int longestIdx = 0;
    int longestLen = arr[0].length();
    int shortestIdx = 0;
    int shortestLen = arr[0].length();
    int cnt = 0;
    String[] result = new String[arr.length - 2];
    // 반복문으로 반복하면서
    for (int i = 0; i < arr.length; i++) {
      // 가장 짧거나 같을 경우 짧은 문자열에
      if (arr[i].length() <= shortestLen) {
        shortestIdx = i;
        shortestLen = arr[i].length();
      }
      // 가장 길거나 같을 경우 긴 문자열에
      if (arr[i].length() >= longestLen) {
        longestIdx = i;
        longestLen = arr[i].length();
      }
    }   
    // 짧은 문자열, 긴문자열을 제외한 요소를 새 배열에 담음
    for (int i = 0; i < arr.length; i++) {
      if (i != shortestIdx && i != longestIdx) {
        result[cnt] = arr[i];
        cnt++;
      }
    }
    // 새 배열 리턴
    return result;
	} 

이 코드는 주어진 문자열 배열에서 가장 긴 문자열과 가장 짧은 문자열을 제외한 나머지 문자열을 새 배열에 담아 반환하는 기능을 가지고 있습니다.

['where', 'is', 'the', 'longest', 'word']를 입력받았을 때, 아래와 같이 처리됩니다.

  1. 문자열 배열의 길이를 확인합니다.
    이 배열의 길이는 5이므로, if 문을 건너뜁니다.

  2. 가장 긴 문자열과 가장 짧은 문자열을 찾습니다.
    for 문을 이용하여 배열의 모든 요소를 탐색하면서,
    현재까지 찾은 가장 짧은 문자열의 길이(shortestLen)보다 작거나 같은 문자열을 만나면, 그 문자열의 인덱스와 길이를 shortestIdx와 shortestLen에 저장합니다. 마찬가지로, 현재까지 찾은 가장 긴 문자열의 길이(longestLen)보다 긴 문자열을 만나면, 그 문자열의 인덱스와 길이를 longestIdx와 longestLen에 저장합니다.

    1회전: i = 0, shortestIdx = 0, shortestLen = 5, longestIdx = 0, longestLen = 5
    2회전: i = 1, shortestIdx = 1, shortestLen = 2, longestIdx = 0, longestLen = 5
    3회전: i = 2, shortestIdx = 1, shortestLen = 2, longestIdx = 0, longestLen = 5
    4회전: i = 3, shortestIdx = 1, shortestLen = 2, longestIdx = 3, longestLen = 7
    5회전: i = 4, shortestIdx = 1, shortestLen = 2, longestIdx = 3, longestLen = 7

  3. 가장 긴 문자열과 가장 짧은 문자열을 제외한 나머지 문자열을 새 배열에 담습니다.
    for 문을 이용하여 배열의 모든 요소를 탐색하면서,
    shortestIdx나 longestIdx와 같은 인덱스를 가지는 문자열을 제외하고
    나머지 문자열을 새 배열(result)에 담습니다.

    1회전: i = 0, shortestIdx = 1, longestIdx = 3, result = ['is']
    2회전: i = 1, shortestIdx = 1, longestIdx = 3, result = ['is', 'the']
    3회전: i = 2, shortestIdx = 1, longestIdx = 3, result = ['is', 'the']
    4회전: i = 3, shortestIdx = 1, longestIdx = 3, result = ['is', 'the']
    5회전: i = 4, shortestIdx = 1, longestIdx = 3, result = ['is', 'the', 'word']

  4. 새 배열을 반환합니다. 최종적으로, ['is', 'the', 'word']가 반환됩니다.

profile
codestates seb 44th // 다크모드로 보는걸 추천드립니다

0개의 댓글