🔗 문제
https://school.programmers.co.kr/learn/courses/30/lessons/181872
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
문자열 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 |
