🎵 문제
String 형인 str 인자에서 중복되지 않은 알파벳으로 이루어진 제일 긴 단어의 길이를 반환해주세요.
str: 텍스트 return: 중복되지 않은 알파벳 길이 (숫자 반환)
예를 들어, str = "abcabcabc" return 은 3 => 'abc' 가 제일 길기 때문
str = "aaaaa" return 은 1 => 'a' 가 제일 길기 때문
str = "sttrg" return 은 3 => 'trg' 가 제일 길기 때문
🤔 생각하자
- 문제를 정확하게 이해하기 위해 여러번 읽어보았다.
- string형인 인자.... 배열로 인덱스 하나씩 돌려볼 필요가 있고..
- 중복되는 알파벳까지 찾아가야하고
- 중복되는 알파벳을 만나면 멈추고 길이의 값으로 리턴받아야 한다.
- 그러니깐 중복되지 않을 때까지 돌리다가 중복되는 애를 만나면 그곳에서 멈춰서 멈춘 그곳까지의 길이를 숫자로 반환해야한다.
- 흐음.. 길이, 요소 찾고 하는 것은 배열로 진입하는 방법만 떠오른다.
- 배열만 떠오르다가 생각이 막혔다. 다른 사람들의 코드를 보면서 하나씩 추리해볼까?
🤓 풀어보자
- 벨로그 이전 자료들을 보면서 내가 이해하고 받아들일 수 있는 코드를 계속 찾아보았다. 코드가 길어보였지만 이미지와 함께 있는 글이 눈에 들어왔고 참고해보았다! (벨로그 이전 자료를 보면서 어떻게 접근했는지 살펴보았다.)
- 역시 난 그림이 조금이라도 있어야 이해가 더 잘된다!
- 빈 배열 등 변수를 먼저 선언해서 접근하는 방식이 확실히 그려지지않는다.
- 이중for문을 통해 배열의 요소들을 반복이 되는 인덱스까지 계속 돌며 빈 배열에 담는 방법이 사용되었고, join되어 문자열-> length값이 먼저 선언된 변수 strArchive 빈 배열에 담겼다.
- 재미있었던 것은
sort()
라는 새로운 메소드가 등장한 것이였다.
sort 단어 자체도 종류,분류하다 라는 뜻을 가진 단어였으며, 네이버 지식백과에서 '소프트웨어 어휘다지기 - 초등' 라는 글에서 이해하기 쉽게 설명이 작성되어있었다. 요즘 초등학생은 다 알고 있는건가..? 분발해야겠다.
- 열심히 for문을 모든 돌린 후 length값이 담겨져 있는 strArchive를 정렬한 후 가장 긴 길이가 위치된 첫번째 인덱스값을 return 하였다.
👏👏 풀이를 저렇게 생각해낸다는 것이 정말 멋있는 것 같다. 나도 이 풀이를 따라가기 위해서 정말 쓰고 지우고 쓰고 지우고 색칠하고 긴 시간을 보내면서 이해를 해볼 수 있어서 즐거웠다. 지금 당장은 나 스스로 꺼내볼 수 없었던 해결 과정이였지만 하루 하루 알아가다보면 나도 누군가에 알게 쉽게 설명해줄 수 있는 그런 멋쟁이가 되길바래본다.😚