코딩 테스트 공부

프로그래머스 자바스크립 코딩 기초 트레이닝 - 특정 문자열로 끝나는 가장 긴 부분 문자열 찾기 (lastIndexOf()메서드, substring()메서드)

dev_in 2026. 1. 8. 17:06

 

문제

문자열 myString과 pat가 주어집니다. myString의 부분 문자열중 pat로 끝나는 가장 긴 부분 문자열을 찾아서 return 하는 solution 함수를 완성해 주세요.



제한사항

  • 5 ≤ myString ≤ 20
  • 1 ≤ pat ≤ 5
    • pat은 반드시 myString의 부분 문자열로 주어집니다.
  • myString과 pat에 등장하는 알파벳은 대문자와 소문자를 구분합니다.

 

고민한 점 & 해결 과정

 

먼저 pat배열이 반드시 포함되는 문제였기에 조건문을 붙이기지 않고 pat배열로 끝나는 myString배열의 마지막 인덱스를 상수화 하는 것을 생각했습니다.

해당 작업을 위해 lastIndexOf()메서드를 고려했습니다.

 

lastIndexOf()메서드

 

<마지막 인덱스 상수화>

function solution(myString, pat) {
    const lastIndex = myString.lastIndexOf(pat);
}

 

이로써 pat배열을 포함한 myString의 부분을 찾을 순 있었지만 인덱스 상태이기 때문에 해당 부분을 리턴하면 문자열이 아닌 숫자값이 돌아올 것입니다. 인덱스에 해당하는 문자열값을 반환하기 위한 방법을 생각하던 중 MDN에서 봤던 substring()메서드가 생각났습니다.

 

substring()메서드

substring() 메서드는 string 객체의 시작 인덱스로 부터 종료 인덱스 전 까지 문자열의 부분 문자열을 반환합니다.

str.substring(indexStart[, indexEnd])

 

처음부터 살펴봐야 하므로 시작 인덱스는 0으로 하고 마지막 인덱스는 상수화 해둔 lastIndex에 pat배열의 길이만큼 추가해 주면 될 것입니다.

 

<최종 코드>

function solution(myString, pat) {
    const lastIndex = myString.lastIndexOf(pat);
        return myString.substring(0, lastIndex + pat.length);
}

 

최종 결과 및 느낀 점

 

배열의 인덱스값과 인덱스에 매칭되는 문자열을 헷갈려서 메서드를 잘못쓰는 경우가 있었는데 해당 문제를 풀면서 각각의 역할에 맞는 메서드를 활용할 수 있게 되었습니다.