프로그래머스 Day - 17

ᵁ-ᴷᴺᴼᵂᴺ·2023년 6월 15일
post-thumbnail

1. 특정 문자열로 끝나는 가장 긴 부분 문자열 찾기

문제 설명

myString의 부분 문자열 중 pat로 끝나는 가장 긴 부분 문자열을 찾아 반환

입출력 예

myStringpatresult
"AbCdEFG""dE""AbCdE"
"AAAAaaaa""a""AAAAaaaa"

코드

function solution(myString, pat) {
    return myString.slice(0, (myString.lastIndexOf(pat))+pat.length)
}

풀이 설명

  • 가장 길땐 일반적으로 검색방법인 왼쪽오른쪽이 아니라 오른쪽왼쪽으로 검색하는것이 훨씬 빠르다.
  • lastIndexOf()메서드를 사용하여 myString의 오른쪽에서부터 pat을 검색한다.
  • 0부터 찾은 인덱스에 pat의 길이만큼 더해준 인덱스 번호까지 slice()메서드를 사용하여 잘라 반환한다.

2. 문자열이 몇 번 등장하는지 세기

문제 설명

myString에서 pat이 등장하는 횟수를 반환

입출력 예

myStringpatresult
"banana""ana"2
"aaaa""aa"3

코드

function solution(myString, pat) {
    let cnt = 0;
    for (let i = 0; i <= myString.length - pat.length; i++) {
        if (myString.slice(i, i + pat.length) === pat) {
            cnt++;
        }
    }
    return cnt;
}

풀이 설명

  • pat의 등장 횟수를 카운트할 변수 cnt0으로 선언한다.
  • 인덱스를 증가시키면서 pat문자열의 길이만큼을 잘라 잘라낸 문자열이 pat과 같다면 cnt1증가시킨다.
  • myString의 길이에서 pat의 길이를 뺀 만큼 반복한다.

3. ad 제거하기

문제 설명

문자열 배열 strArr에 있는 문자열들 중 ad가 포함된 문자열을 제거한 나머지 문자열을 순서를 유지하여 배열로 반환하시오.

입출력 예

strArrresult
["and","notad","abcd"]["and","abcd"]
["there","are","no","a","ds"]["there","are","no","a","ds"]

코드

function solution(strArr) {
    return strArr.filter((word) => !(word.includes("ad")))
}

풀이 설명

  • strArrfilter()메서드를 사용하여 콜백함수에 조건을 설정해준다.
  • 배열을 순회하며 원소를 받을 word에 "ad"가 포함돼 있을때 !을 붙혀 그때만 false가 되게 만든다.
  • 결과적으로 ad가 포함된 문자열을 제외한 나머지 문자열이 순서를 유지하며 반환된다.

4. 공백으로 구분하기 1

문제 설명

공백이 포함된 하나의 문자열에서 공백으로 구분된 글자들을 하나의 문자열 원소로 하여 배열을 반환

입출력 예

my_stringresult
"i love you"["i", "love", "you"]
"programmers"["programmers"]

코드

function solution(my_string) {
    return my_string.split(" ")
}

풀이 설명

split()메서드를 사용하여 my_string의 공백으로 구분된 문자열을 잘라 배열로 반환한다.


5. 공백으로 구분하기 2

문제 설명

단어가 한 개 이상의 공백으로 구분된 문자열을 분리하여 배열로 반환

입출력 예

my_stringresult
"i love you"["i", "love", "you"]
" programmers "["programmers"]

코드

function solution(my_string) {
    return my_string.split(" ").filter(word => !(word==""));
}

풀이 설명

my_stringsplit()메서드로 분리 시켜준다음 빈문자열이 원소로 들어가는 것을 방지하기위해 filter()메서드를 사요하여 문자열이 비어있지 않은 경우의 원소들만 배여롤 반환한다.

profile
ΔIM ΩΠ ҒULLSTΔCҜ

0개의 댓글