성장일기

내가 보려고 정리하는 공부기록

코딩테스트/프로그래머스 Lv.0

[프로그래머스] 특정 문자열로 끝나는 가장 긴 부분 문자열 찾기 (lastIndexOf) - JAVA

와나나나 2023. 9. 14. 20:01
728x90

프로그래머스 _ 코딩 기초 트레이닝 DAY 17 - (1)

출처 - https://school.programmers.co.kr/learn/courses/30/lessons/181872

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

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

 

입력 #1 |  myString : "AAAAaaaa"  pat : "a"

출력 #1 | "AAAAaaaa"


>> 풀이 <<

pat이 myString에서 어디에 있는지 인덱스를 찾아주면 되는데, 가장 긴 부분 문자열을 찾아야 하므로 뒤에서부터 찾아야 한다! 인덱스를 받아서 그 부분까지 String을 잘라주면 된다고 생각하고 풀이를 시작했다. 

 

  •  원하는 문자열 찾기 - string.indexOf(), string.lastIndexOf()
    • string.indexOf(원하는 문자 또는 문자열)은 인수로 넣은 문자나 문자열의 index를 리턴해주는 메소드이다. indexOf()는 문자열을 앞에서부터 찾아준다.
    • string.lastIndexOf()는 인수를 뒤에서부터 찾아준다. 그래서 나는 이 메소드를 사용했다.
  • 문자열 자르기 - string.substring()
    • string.substring(시작인덱스, 끝인덱스)는 입력한 인덱스 부분만 잘라내주는 메소드이다. 
    • 시작 인덱스를 입력하지 않으면 0부터 시작하고, 끝인덱스는 반드시 원하는 부분 + 1 만큼을 입력해야한다.

코드는 아래와 같다.

class Solution {
    public String solution(String myString, String pat) {
        String answer = "";
        int a = myString.lastIndexOf(pat);
        return myString.substring(0,a + pat.length());
    }
}