11번

nacSeo (낙서)·2022년 12월 1일
0

DailyCoding

목록 보기
11/28

문자열 배열을 입력받아 가장 짧은 문자열과 긴 문자열을 제거한 배열을 리턴하는 문제였다.
주의사항에서는 가장 짧은 문자열이나 가장 긴 문자열이 다수일 경우, 나중에 위치한 문자열을 제거한다고 나와있는데 이것때문에 나중에 계속 테스트 통과를 못해서 식겁했다 🥲
처음엔 for문을 돌려주면서 index 앞 뒤의 값을 비교해주며 진행하려 했는데, 코드를 작성하면서 뭔가 돌리는 과정에서 index 앞 뒤 값을 비교해주는 방법은 답이 없다고 생각됐다 😂
다른 방법을 골똘히 생각해보고 구글링도 해본 결과, 가장 짧은 문자열 길이, 가장 긴 문자열 길이, 가장 짧은 문자열의 인덱스, 가장 긴 문자열의 인덱스를 각각 선언해주고 들어가는 방법으로 풀어야 할 것 같았다.

먼저 문제에서 받아오는 배열들의 문자열 길이가 20 이하라고 나와있어서 shortest(가장 짧은 문자열 길이)에는 20을 넣고 시작했고, longest(가장 긴 문자열 길이)에는 0을 넣고 시작했다.
index들을 돌면서 각 인덱스의 값이 shortest보다 작으면은 shortest에 해당 인덱스 길이를 넣어주고, shortestIndex에는 해당 인덱스를 넣어주었다. 반대로 longest보다 크면 longest에 해당 인덱스 길이를 넣어주고, longestIndex에 해당 인덱스를 넣어줬다.
마지막으로, 결과 배열로 길이가 입력받은 문자열 배열보다 2만큼 작은(최소길이 문자열, 최대길이 문자열 2개가 제거되기 때문) 문자열 배열을 선언해주고, for문으로 index를 돌면서 인덱스가 shortestIndex, longestIndex가 아닐 때만 결과 배열에 추가해줬다. 그러면 자연스럽게 최소길이 문자열, 최대길이 문자열이 빠진 배열이 들어갈 것이다❗️

내가 헤맸던 부분은 처음 입력받은 배열의 인덱스를 돌며 shortest와 longest를 비교하며 할당해주는 과정에서 =(같다)를 빼먹은 것이다.. 그래서 가장 짧은 문자열이나 긴 문자열이 다수인 경우 나중에 위치한 문자열을 제거한다는 주의사항이 지켜지지 않아서 테스트 오류가 많이 났다 🥲
주어진 1시간을 꽉 채운 까다로운 문제였다.

profile
백엔드 개발자 김창하입니다 🙇‍♂️

0개의 댓글