문제 설명
문자열 myString과 pat가 주어집니다. myString의 부분 문자열중 pat로 끝나는 가장 긴 부분 문자열을 찾아서 return 하는 solution 함수를 완성해 주세요.
제한사항
- 5 ≤ myString ≤ 20
- 1 ≤ pat ≤ 5
- pat은 반드시 myString의 부분 문자열로 주어집니다.
- myString과 pat에 등장하는 알파벳은 대문자와 소문자를 구분합니다.
입출력 예
myString | pat | result |
"AbCdEFG" | "dE" | "AbCdE" |
"AAAAaaaa" | "a" | "AAAAaaaa" |
입출력 예 설명
입출력 예 #1
- "AbCdEFG"에서 "dE"는 한 번 등장하며 처음부터 해당 위치까지 잘라내면 "AbCdE"가 됩니다. 따라서 이 문자열이 "dE"로 끝나는 가장 긴 문자열이며, "AbCdE"를 return 합니다.
입출력 예 #2
- "AAAAaaaa"에서 "a"는 총 네 번 등장하며 이 중 가장 마지막에 있는 위치까지 잘라내면 "AAAAaaaa"가 됩니다. 따라서 이 문자열이 "a"로 끝나는 가장 긴 문자열이며, "AAAAaaaa"를 return 합니다.
문제풀이
- lastIndexOf() : 주어진 값과 일치하는 부분은 fromIndex로 부터 역순으로 탐색하여, 최초로 마주치는 인덱스를 반환한다.
- substr() : 문자열의 특정 위치에서 시작하여 특정 문자 수 만큼의 문자들을 반환한다.
function solution(myString, pat) {
var answer = "";
const last = myString.lastIndexOf(pat);
// lastIndexOf() : 주어진 값과 일치하는 부분을 fromIndex로 부터 역순으로 탐색하여, 최초로 마주치는 인덱스를 반환한다.
answer = myString.substr(0, last + pat.length);
// substr() : 문자열의 특정 위치에서 시작하여 특정 문자 수 만큼의 문자들을 반환한다.
// 이때 특정 문자 수를 last + pat.length로 한 이유 : index는 0부터 시작하고, pat이 1보다 큰 경우 last에서는 맨 앞글자만 출력하기 때문에 last에 pat.length를 더해서 거기까지 잘라냈다.
return answer;
}
solution("AbCdEFG", "dE");
solution("AAAAaaaa", "a");
하다보니 실력이 느는 것 같아서 좋았다ㅎㅎ
'코딩 테스트 연습 > Programmers' 카테고리의 다른 글
[프로그래머스] 서울에서 김서방 찾기 (0) | 2023.07.29 |
---|---|
[프로그래머스] x만큼 간격이 있는 n개의 숫 (0) | 2023.07.28 |
[프로그래밍] 빈 배열에 추가, 삭제하기 (0) | 2023.07.26 |
[프로그래머스] 공 던지기 (0) | 2023.07.25 |
[프로그래머스] n의 배수 고르기 (0) | 2023.07.24 |
댓글