Suzie's Blog

[프로그래머스] 접미사인지 확인하기 본문

개발/코딩테스트

[프로그래머스] 접미사인지 확인하기

Iuna 2023. 7. 23. 14:25
반응형
SMALL
문제 설명
어떤 문자열에 대해서 접미사는 특정 인덱스부터 시작하는 문자열을 의미합니다. 예를 들어, "banana"의 모든 접미사는 "banana", "anana", "nana", "ana", "na", "a"입니다.
문자열 my_string과 is_suffix가 주어질 때, is_suffix가 my_string의 접미사라면 1을, 아니면 0을 return 하는 solution 함수를 작성해 주세요.

제한사항

  • 1 ≤ my_string의 길이 ≤ 100
  • 1 ≤ is_suffix의 길이 ≤ 100
  • my_string과 is_suffix는 영소문자로만 이루어져 있습니다.

입출력 예

my_string is_suffix result
"banana"  "ana"  1
"banana"  "nan"  0
"banana"  "wxyz"  0
"banana"  "abanana"  0

입출력 예 설명

입출력 예 #1
예제 1번에서 is_suffix가 my_string의 접미사이기 때문에 1을 return 합니다.

입출력 예 #2
예제 2번에서 is_suffix가 my_string의 접미사가 아니기 때문에 0을 return 합니다.

입출력 예 #3
예제 3번에서 is_suffix가 my_string의 접미사가 아니기 때문에 0을 return 합니다.

입출력 예 #4
예제 4번에서 is_suffix가 my_string의 접미사가 아니기 때문에 0을 return 합니다.

나의 풀이

const solution = (my_string, is_suffix) => {
    const arr = [];
    for(let i=0; i<my_string.length; i++){
        arr.push(my_string.slice(i))
    }
    return arr.includes(is_suffix) ? 1 : 0
}

string도 length를 구할 수 있는 점을 이용해서 for 문을 string의 길이만큼 돌려주고 빈배열 arr에 slice를 이용해서 앞글자부터 점차 잘라준 요소들을 push해주었고 만약 is_suffix가 arr에 포함되어있으면 1 아니면 0을 return하도록 삼항연산자를 이용하여 문제를 해결했다.

인상 깊었던 다른사람의 풀이

const solution = (my_string, is_suffix) => my_string.endsWith(is_suffix) ? 1 : 0

아니 이걸 한줄로 풀었다니..! 분석을 한번 해보겠다.
처음보는 method가 보인다

 

"endsWith" 

 

mdn에 한번 검색해 보았다. 

The `endsWith()` 메서드를 사용하여 어떤 문자열에서 특정 문자열로 끝나는지 확인할 수 있어며, 그 결과를 true 혹은 false로 반환한다. (출처 : mdn)

아래는 예제이다

var str = 'To be, or not to be, that is the question.';

console.log(str.endsWith('question.')); // true
console.log(str.endsWith('to be'));     // false
console.log(str.endsWith('to be', 19)); // true

두번째로 오는 요소를 이용해서 스트링의 마지막 글자의 limit을 설정 해 줄 수 있는 것 같다.

 

 

반응형
LIST