📝 문제 설명
문자열 myString과 pat이 주어집니다. myString의 부분 문자열 중 pat로 끝나는 가장 긴 부분 문자열을 찾아서 return 하는 solution 함수를 완성해 주세요.
⚠️ 제한사항
- 5 ≤
myString≤ 20 - 1 ≤
pat≤ 5 pat은 반드시myString의 부분 문자열로 주어집니다.- 대소문자를 구분합니다.
입출력 예
| myString | pat | result |
|---|---|---|
| "AbCdEFG" | "dE" | "AbCdE" |
| "AAAAaaaa" | "a" | "AAAAaaaa" |
✅ 정답 코드 (Java)
가장 마지막에 등장하는 pat의 위치를 찾는 것이 핵심입니다. 자바의 내장 메서드인 lastIndexOf()를 사용하면 매우 간결하게 풀 수 있습니다.
class Solution { public String solution(String myString, String pat) { // 1. pat이 마지막으로 나타나는 시작 인덱스를 찾습니다. int lastIndex = myString.lastIndexOf(pat); // 2. 0번 인덱스부터 (마지막 인덱스 + pat의 길이)까지 자릅니다. // substring의 두 번째 파라미터는 '포함되지 않는 끝점'이므로 길이를 더해줍니다. String answer = myString.substring(0, lastIndex + pat.length()); return answer; } }
💡 풀이 해설
- lastIndexOf(pat): 문자열의 뒤에서부터
pat이 어디 있는지 찾습니다. 만약 "AAAAaaaa"에서 "a"를 찾는다면 가장 마지막인 인덱스 7을 반환합니다. - substring(0, end): 시작점부터 우리가 찾은 위치까지 문자열을 추출합니다. 이때
pat자체도 결과에 포함되어야 하므로pat.length()만큼 더 뒤쪽까지 잘라주는 것이 포인트입니다.
'Problem Solving > Algorithm' 카테고리의 다른 글
| [Java] 프로그래머스 - ad 제거하기 (0) | 2026.03.30 |
|---|