[프로그래밍] 특정 문자열로 끝나는 가장 긴 부분 문자열 찾기
본문 바로가기
코딩 테스트 연습/Programmers

[프로그래밍] 특정 문자열로 끝나는 가장 긴 부분 문자열 찾기

by 은돌1113 2023. 7. 27.

문제 설명

문자열 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.co.kr

 

하다보니 실력이 느는 것 같아서 좋았다ㅎㅎ

댓글