mark340
착하게살자
mark340
전체 방문자
오늘
어제
  • 분류 전체보기 (98)
    • 백준 (11)
    • 알고리즘 (1)
    • Javascript (17)
    • CS (18)
    • 기타 (9)
    • AI (1)
    • Angular (2)
    • Linux (14)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • parsing
  • JavaScript
  • MySQL
  • Closure
  • oauth

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
mark340

착하게살자

Javascript

[JS] 중복되지 않는 알파벳으로 이루어진 가장 긴 문자열 찾기

2022. 12. 31. 12:20

# 문제
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
    'Javascript' 카테고리의 다른 글
    • [Javascript] 커링(Currying)이란
    • [Javascript] require 와 import 비교
    • [Javascript] Closure
    • [JavaScript] 이진 탐색(Binary Search) 알고리즘
    mark340
    mark340
    착하게삽시다

    티스토리툴바