문제
문자열 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);
}
최종 결과 및 느낀 점
배열의 인덱스값과 인덱스에 매칭되는 문자열을 헷갈려서 메서드를 잘못쓰는 경우가 있었는데 해당 문제를 풀면서 각각의 역할에 맞는 메서드를 활용할 수 있게 되었습니다.
'코딩 테스트 공부' 카테고리의 다른 글
| 프로그래머스 자바스크립 코딩 기초 트레이닝 - A 강조하기 (대소문자 변환 메서드, replace(), replaceAll() 메서드, 정규 표현식) (0) | 2026.01.07 |
|---|---|
| 프로그래머스 자바스크립 코딩 기초 트레이닝 - 조건에 맞게 수열 변환하기 1 (&& 연산자, map()메서드) (0) | 2026.01.02 |
| 프로그래머스 자바스크립 코딩 기초 트레이닝 - 수열과 구간 쿼리1 (이중 for 문) (0) | 2026.01.02 |
| 프로그래머스 자바스크립 코딩 기초 트레이닝 - 가까운 1 찾기 & 첫 번째로 나오는 음수 (0) | 2025.12.26 |
| 프로그래머스 자바스크립 코딩 기초 트레이닝 - 접미사 배열 (0) | 2025.12.17 |