오늘 스터디 시간에는
1.오늘 배운 웹 애플리케이션 내용 복습
2.내일 해볼 API 내용 예습
3.데일리 코딩 문제 틀린 부분 질문
을 진행했다.
복습한 내용은 부트캠프에 정리해두었으니, 여기에서는 틀린 코딩 문제를 복기해보자.
문제
문자열을 요소로 갖는 배열을 입력받아 가장 짧은 문자열과 가장 긴 문자열을 제거한 배열을 리턴해야 합니다.
입력
인자 1 : arr
- String 타입을 요소로 갖는 배열
- arr[i].length()는 20 이하
출력
- 배열을 리턴해야 합니다.
주의 사항
- 가장 짧은 문자열의 길이와 가장 긴 문자열의 길이가 같은 경우는 없습니다.
- 가장 짧은 문자열 또는 가장 긴 문자열이 다수일 경우, 나중에 위치한 문자열을 제거합니다.
- 공백을 입력받을 경우, null을 반환합니다.
입출력 예시
1
2
3
4
5
|
String[] output = removeExtremes(new String[]{"a", "b", "c", "def"});
System.out.println(output); // --> ["a"', "b"]
output = removeExtremes(new String[]{"where", "is", "the", "longest", "word"});
System.out.println(output); // --> ["where", "the", "word"]
|
cs |
문제 풀이
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
public class Solution {
public String[] removeExtremes(String[] arr) {
// TODO:
// 공백입력시 null
if(arr.length == 0) return null;
// 가장 긴 문자열 longest 선언 초기값은 arr[0]
String longest = arr[0];
// 가장 짧은 문자열 shortest 선언 초기값은 arr[0]
String shortest = arr[0];
// 각각 문자열의 인덱스도 선언
int longestIndex = 0;
int shortestIndex = 0;
// arr을 순회하면서
for(int i = 1; i < arr.length; i++){
// 각 요소의 길이를 비교
// arr[i].length <= shortest.length 라면 shortest = arr[i]
if(arr[i].length() <= shortest.length()) {
shortest = arr[i];
shortestIndex = i;}
// arr[i].length >= longest.length 라면 longest = arr[i]
else if(arr[i].length() >= longest.length()) {
longest = arr[i];
longestIndex = i;}
}
//arr에서 longest와 shortest를 제거
List<String> result = new ArrayList<>(Arrays.asList(arr));
result.remove(longestIndex);
result.remove(shortestIndex);
//arr리턴
return result.toArray(new String[0]);
}
}
|
cs |
반복문을 순회하면서
가장 긴 문자열 longest 와 longest의 인덱스 값을 넣어준 longestIndex,
가장 짧은 문자열 shortest와 shortest의 인덱스 값을 넣어준 shortestIndex를 저장했고,
arr을 리스트로 변환 후 remove메서드를 통해 longest와 shortest를 제거하고, 제거를 마친 리스트를 배열로 다시 변환하려고 했지만 7개의 테스트 중 5개만 통과하고 2개는 실패했다.
26번 줄 이후인 arr을 리스트로 변환 후 remove메서드를 통해 longest와 shortest를 제거하고, 제거를 마친 리스트를 배열로 다시 변환하는 과정에서 문제가 있는 것 같은데 관련하여 계속 찾아봤지만 해답을 찾지 못했다. 나를 가장 복잡하게 만든건 IndexOutOfBoundsException 오류가 나온것이다.
현재는 코드스테이츠 강사님께 질문을 드린 상태이고, 답변을 받아 해결하게되면 이 게시글 아래에 추가로 수정하겠다.
'코딩 스터디' 카테고리의 다른 글
Schema 구현 및 INNER JOIN과 OUTER JOIN (0) | 2023.02.01 |
---|---|
요소 크기 비교 문제 (0) | 2023.01.31 |
momo study(23.01.25) (2) | 2023.01.25 |
momo study(23.01.21) (0) | 2023.01.21 |
momo study(23.01.20) (1) | 2023.01.20 |