Coding Test/Java Coding Test

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

nam_ji 2024. 6. 26. 12:52

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

문제

  • 문자열 my_string과 pat이 매개변수로 주어집니다.
  • my_string의 부분 문자열 중 pat로 끝나는
  • 가장 기 부분 문자열을 출력하는 문제입니다.
  • myString pat result
    "AbCdEFG" "dE" "AbCdE
    "AAAAaaaa" "a" "AAAAaaaa"


테스트 (인텔리제이)

  • pat이 포함된 가장 긴 문자열을 출력해야 하기 때문에 문자열을 자르기 위한 substring 메서드와 해당 인덱스 번호를 확인해야 하기 때문에 indexOf 메서드를 생각했습니다.
  • 우선 my_string에 substring 메서드를 사용합니다.
  • substring의 시작을 0으로 하고 마지막은 my_String의 문자열에서 pat의 문자열과 일치하면서 가장 긴 문자열로 출력해야 하기 때문에 뒤에서 pat과 일치하는 인덱스 번호를 찾아야 조건을 만족할 수 있을거라 생각하여 lastIndexOf 메서드를 사용했습니다.
  • 여기서 + pat의 길이를 더해준 이유는 substring은 마지막 인덱스 번호 전까지 문자열을 잘라 출력하기 때문에 pat의 길이만큼 추가해서 잘라줘야 조건을 만족시킬 수 있습니다.
  • 두 번째 방법으로 StringBuilder를 사용한 방법입니다.
  • StringBuilder는 새로운 문자를 추가할 때 append 메서드를 사용합니다.
  • append 안에는 가공할 문자열을 첫 번째로 작성하고 2번째는 시작 위치 세번째는 마지막 위치를 작성해주면 됩니다.
public class 특정_문자열로_끝나는_가장_긴_부분_문자열_찾기 {
  public static void main(String[] args) {
    /*
    문자열 my_string과 pat이 매개변수로 주어집니다.
    my_string의 부분 문자열 중 pat로 끝나는
    가장 기 부분 문자열을 출력하는 문제입니다.

    입출력 예
    myString	  pat   result
    "AbCdEFG"	  "dE"  "AbCdE"
    "AAAAaaaa"	"a"	  "AAAAaaaa"
     */

    String my_string = "AAAAaaaa";
    String pat = "a";
    String answer = "";

    answer = my_string.substring(0, my_string.lastIndexOf(pat) + pat.length());

    System.out.println(answer);

//    String my_string = "AbCdEFG";
//    String pat = "dE";
//    StringBuilder answer = new StringBuilder();
//
//    answer.append(my_string, 0, my_string.lastIndexOf(pat) + pat.length());
//
//    System.out.println(answer);
  }
}

프로그래머스 코드

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

// class Solution {
//     public StringBuilder solution(String myString, String pat) {
//         StringBuilder answer = new StringBuilder();
        
//         return answer.append(myString, 0, myString.lastIndexOf(pat) + pat.length());
//     }
// }

String 풀이
StingBuilder 풀이