# 문제
String 형인 str 인자에서 중복되지 않은 알파벳으로 이루어진 제일 긴 단어의 길이를 반환해주세요.
str: 텍스트
return: 중복되지 않은 알파벳 길이 (숫자 반환)
예를 들어,
str = "abcabcabc"
return 은 3
=> 'abc' 가 제일 길기 때문
str = "aaaaa"
return 은 1
=> 'a' 가 제일 길기 때문
str = "sttrg"
return 은 3
=> 'trg' 가 제일 길기 때문
reduce,, for,, forEach,, 재귀함수 등 여러가지 알고있는 방법 총 동원하여 며칠 씨름하다 해결完,,,
충분히 해결할 수 있는 문제였는데 막무가내 식으로 접근하니 코드가 꼬이고 생각도 꼬이는 구나,,
초기에 어떻게 문제를 해결할지 우선적으로 생각해보고 설계를 잘 하는게 중요,,
const getLengthOfStr = str => {
let word = []; // 1.중복되지 않는 알파벳을 담을 배열 생성
let count = 0; // 2.문자열의 길이 변수 생성
for(let i in str){ // 3.입력된 문자열의 길이 만큼 반복
if(word.indexOf(str[i]) === -1){ // 4. word 배열에 알파벳 문자열이 없을 경우.(초기값 해당)
word.push(str[i]) // 4-1. word 배열에 알파벳 추가.
if(count < word.length){ // 4-2. count변수값이 알파벳 배열의 길이보다 작을 경우. (초기 0)
count = word.length // 4-3.count 변수의 값을 알파벳 배열의 길이로.
}
} else { //5. word 배열에 중복된 알파벳이 있을경우
word = word.slice(word.indexOf(str[i]) + 1);
//6.중복된 알파벳을 word배열에서 찾아서 그 다음 문자열부터 새로운 배열을 생성함(slice + 1)
//이 부분 굉장히 헷갈리는 부분이니 집중요망.
word.push(str[i]); // 6-1. slice로 만들어진 새배열에 중복된 문자열 넣기
}
};
return count // 7.중복되지 않는 알파벳의 길이가 가장 클 경우의 값을 반환 (8번째 줄 참조)
};
getLengthOfStr('sttrg')
'Javascript' 카테고리의 다른 글
[Javascript] 커링(Currying)이란 (0) | 2023.01.17 |
---|---|
[Javascript] require 와 import 비교 (0) | 2023.01.09 |
[Javascript] Closure (0) | 2022.10.17 |
[JavaScript] 이진 탐색(Binary Search) 알고리즘 (0) | 2022.09.13 |
[Javascript] Math 함수 정리 (0) | 2022.09.13 |