특정 문자열로 끝나는 가장 긴 부분 문자열 찾기

Programmers 코딩 기초 트레이닝

문제 설명

주어진 문자열 myString과 패턴 pat가 있습니다. myString에서 패턴 pat로 끝나는 가장 긴 부분 문자열을 찾아 반환하는 solution 함수를 완성해야 합니다.

제한사항

  • 문자열 myString의 길이는 5 이상 20 이하입니다.
  • 패턴 pat의 길이는 1 이상 5 이하입니다.
  • 패턴 pat은 반드시 문자열 myString의 부분 문자열입니다.
  • 문자열 myString과 패턴 pat에 등장하는 알파벳은 대소문자를 구분합니다.

입출력 예

myString pat result
“AbCdEFG” “dE” “AbCdE”
“AAAAaaaa” “a” “AAAAaaaa”

입출력 예 설명

입출력 예 #1
문자열 “AbCdEFG”에서 “dE”는 한 번 등장합니다. 이를 기준으로 해당 위치까지 잘라내면 “AbCdE”가 됩니다. 따라서 이 문자열이 “dE”로 끝나는 가장 긴 문자열이며, “AbCdE”를 반환합니다.

입출력 예 #2
문자열 “AAAAaaaa”에서 “a”는 총 네 번 등장합니다. 이 중 가장 마지막에 있는 위치까지 잘라내면 “AAAAaaaa”가 됩니다. 따라서 이 문자열이 “a”로 끝나는 가장 긴 문자열이며, “AAAAaaaa”를 반환합니다.

public class Solution {

	public static void main(String[] args) {
		String myString = "AbCdEFG";
		String pat = "dE";
		String sol = solution(myString, pat);
		System.out.println(sol);
	}
	
	public static String solution(String myString, String pat) {
 
		String answer = "";
		//lastIndex() 메소드는 파라미터로 전달받은 문자열을 원본 문자열의 뒤에서부터 탐색하여, 처음으로 파라미터의 문자열이 나오는 index를 리턴합니다.
		int Idx = myString.lastIndexOf(pat);
		//d의 인덱스 3
		System.out.println(Idx);
		
		//myString의 처음부터 d전까지 substring으로 추출한 후 문자열 pat을 더해서 반환 
		answer = myString.substring(0, Idx) + pat;
	
		return answer;
	}

}

출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges

Leave a comment