Algorithm | Code Kata #3

Wook·2021년 12월 4일
0

Algorithm | Code Kata

목록 보기
3/21

String 형의 한 단어를 인자로 받아 그 안에서 중복되지 않은 알파벳으로 이어진 제일 긴 단어의 길이를 반환하는 문제이다. 문제가 처음엔 이해가 잘 안됬는데, 반환하는 제일 긴 단어 내에서 중복되는 알파벳이 없도록 해주면 되기에, 첫 글자를 기준으로 잡으면서 단어를 계속 만들어주는 과정을 거치면 될 것 같다고 생각하고 풀이를 진행했다.


📲 My Code

const getLengthOfStr = (str) => {

  let character = ""; // 문자열을 만들어줄 String 변수
  let maxlength = [0]; // 각 단어의길이를 배열에 추가 (그 중 가장 긴 길이를 반환, 0은 배열이 빈 경우를 대비)

  for (let i=0; i<str.length; i++){
    character=str[i]; //문자열의 첫글자 지정
    for(let j=i+1; j<str.length; j++){ // 다음 글자부터
      if(character.includes(str[j])){ // 문자열에 해당 글자가 포함된다면 break
        break; 
      }
      else {
        character+=str[j]; // 아닐 경우 문자열에 글자 추가
      }
    }
    maxlength.push(character.length); // break 후의 글자 길이 배열에 추가
  }
  return Math.max(...maxlength); // 최대 길이 반환

}

느낀 점

처음부터 쉽게 접근이 되지 않았다, 결국 greedy한 방법으로 접근했고, 단어의 첫 글자부터 끝까지를 기준으로 잡으면서(첫번째 for), 문자열에 글자를 하나씩 추가해주며 중복여부를 체크해주며 중복된다면 당시의 길이를 배열에 하나씩 추가해주었다. 최종적으로 5글자의 단어라면 배열 안은 5개의 수가 담기며 그 중 가장 큰 값이 문제에서 요구하는 중복되지 않은 알파벳으로 이어진 제일 긴 단어의 길이를 반환하는 값이 된다. 더 좋은 풀이로 코드를 줄일 수 있거나 떠오른다면 고쳐보도록 해야겠다.

profile
지속적으로 성장하고 발전하는 진취적인 태도를 가진 개발자의 삶을 추구합니다.

0개의 댓글