🔗 문제
https://school.programmers.co.kr/learn/courses/30/lessons/181872
문제 설명
문자열 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" |
💻 Code
def solution(myString, pat):
for i in range(len(myString), 0, -1):
for j in range(len(myString) - i + 1):
substring = myString[j:j + i]
if substring.endswith(pat):
return substring
- 첫 번째 for 루프는
myString
의 부분 문자열 길이를 역순으로 순회한다. 즉, 가장 긴 길이(len(myString)
)에서 시작해서 가장 짧은 길이(1)까지 하나씩 줄여간다. - 두 번째 for 루프는 시작 현재 부분 문자열 길이에 따라 가능한 모든 시작 위치를 반복한다.
이 두 개의 루프를 통해 myString
의 가장 긴 부분 문자열부터 차례대로 구할 수 있다.
예제 1의 경우, "AbCdEFG"
의 부분 문자열은 다음과 같은 순서대로 구해진다.
AbCdEFG
AbCdEF
bCdEFG
AbCdE
...
F
G
위와 같이 부분 문자열을 구한 뒤 substring.endswith(pat)
을 이용하여 substring
이 pat
으로 끝나는지 확인한다. 만약 pat
으로 끝난다면 해당 부분 문자열(substring
)을 반환한다.
'Algorithm > 프로그래머스' 카테고리의 다른 글
[Lv.0/Python] 잘라서 배열로 저장하기 (0) | 2023.07.10 |
---|---|
[Lv.0/Python] 7의 개수 (0) | 2023.07.10 |
[Lv.0/Python] 빈 배열에 추가, 삭제하기 (0) | 2023.07.09 |
[Lv.0/Python] 문자열 묶기 (0) | 2023.07.07 |
[Lv.0/Python] 리스트 자르기 (0) | 2023.07.07 |