코딩테스트 | (JavaScript) Coderbyte : Longest Word

✅문제

Have the function LongestWord(sen) take the sen parameter being passed and return the longest word in the string. If there are two or more words that are the same length, return the first word from the string with that length. Ignore punctuation and assume sen will not be empty. Words may also contain numbers, for example "Hello world123 567"

🎹📢입출력 예제

✍풀어보기

function LongestWord(sen) { 
  const regExp = new RegExp(/\w$/);
  let max = 0;

  sen.split(' ').map((element) => {
    if(element.length <= max){
      return;
    }
    if(regExp.test(element)){
      max = element.length;
      sen = element;
    }
  });
  
  return sen; 
}

LongestWord(readline());

먼저 공백으로 문자열을 배열로 나누고 map() 함수를 통해 전체 요소를 하나하나 탐색한다.
첫 번째 조건은 길이가 최대보다 작거나 같으면 빈 문자열을 리턴해주면서 다음 요소를 계속 탐색한다. 두 번째 조건은 전에 탐색한 요소의 길이보다 큰 문자열이며 정규표현식 검사를 통해 숫자를 포함한 문자인지 검사한다.

정규표현식으로 [A-Za-z0-9_]에 동일한 \w를 넣어주었다. 그리고 끝에 $를 포함시켜 \w로 끝나는라는 조건이 생긴 것이다. 그래서 문자로만 이루어진 것만 판별한다.

Coderbyte에서 자바스크립트 문자열 문제는 정규표현식을 이용해서 풀어야 하는 것들이 꽤 있는 것 같다. 처음 가입했을 때도 정규표현식을 이용하여 문자열을 필터링하는 문제였었다.



참고 자료 및 사이트 (감사합니다)

좋은 웹페이지 즐겨찾기