[TIL] # 30 알고리즘 |Code Kata - 03 |

DamHo Bae·2021년 3월 4일
0

Code Kata 알고리즘

목록 보기
2/5
post-thumbnail

중복되지 않은 알파벳으로 이루어진 제일 긴 단어 찾아보자!

오늘 하루

  • Code Kata 3번째 문제 시작 !
  • westagram 레이아웃 추가
  • react state 예습 공부

Code Kata # 03

String 형인 str 인자에서 중복되지 않은 알파벳으로 이루어진 제일 긴 단어의 길이를 반환해주세요.

str: 텍스트
return: 중복되지 않은 알파벳 길이 (숫자 반환)

예를 들어,
str = "abcabcabc"
return 은 3
=> 'abc' 가 제일 길기 때문

str = "aaaaa"
return 은 1
=> 'a' 가 제일 길기 때문

str = "sttrg"
return 은 3
=> 'trg' 가 제일 길기 때문

My Code

const getLengthOfStr = str => {
  // 아래 코드를 작성해주세요.
    if(str === ""){
    	return 0;
    	}
    let arr = [];
    let newStr = "";
        for(let i in str){
        	if(newStr.includes(str[i])){
          		newStr = newStr.slice(newStr.indexOf(str[i]+1));
           			}
            newStr += str[i];
            arr.push(newStr.length); 
        }
        return Math.max(...arr);
}

Code Review

먼저 문제를 보면 str인자는 string 형태이다.
우리는 중복되지 않게, 제일 긴 단어 라는 조건을 확인 할 수 있었다.
코드 하나하나 살펴보자

  1. 새로운 배열을 변수:(arr)선언 / 새로운 문자열 선언 변수:(newStr)

  2. 새로운 빈 문자열에 기존 문자열 인덱스를 제외하고 자른다
    +1 = 인덱스는 0부터 시작하기에

  3. 만약 새로운 string이 기존 str의 단어를 가지고 있을 경우
    새로운 String에 기존 단어가 포함된 index를 제외하고 자른다 indexOf 사용 !!
    빈 문자열에 기존 문자열 i를 더 하고 새로운 배열이 배열 끝에 요소를 Push하고, 새로운 문자열 newStr의 길이를 담아줬다.

  4. arr은 이제 빈 배열이 아니다. 새로운 배열 arr에 기존 str인자를 받았고, 제일 긴 단어를 찾기 위해서 Math.Max() 함수를 사용했다.
    배열에 요소가 너무 많으면 잘못된 결과를 반환되어서 (...)을 사용했다.
    자세한건 아래 링크를 다시 한 번 참고하자!

  5. 그런데, 2번째 배열이 에러가 ?????
    그렇다 2번째는 하필 공백이였다. 맨 위에 함수안에다가 조건문으로
    str이 공백이라면 return 0을 반환 해주어 마무리 !

Math.Max 참조


완료 !

이번 알고리즘 코드카타는 정말 어렵기도 했고 시간이 많이 걸렸다..
다시 한 번 복습 해보는 시간을 가져야겠다.

profile
Frontend Developer

0개의 댓글