안녕하세요. 이번 포스팅에서는 Py.CheckiO 의 Home 레벨에 있는 Between markers 문제풀이를 해보겠습니다.
주의:
제 답이 최고/최적화된 답이 아닐 수 있으며, 해결하는 것에만 집중한 답이기 때문에 좀 더 나은 방법이나 해석이 있으시다면 댓글 부탁드립니다.
0. Between markers 문제 내용
Between markers 문제는 이전의 Between markers(simplified) 문제의 풀버전입니다.
그만큼 여러 경우의 수를 다 고려해야 하는 문제입니다.
문제는 하나의 문자열(text)과 두 개의 문자(begin, end)가 주어지는데
이 begin과 end 사이의 문자열을 return 하는 문제입니다.
위의 경우는 begin과 end가 정상적으로 text 문자열 안에 존재할 때의 경우이고,
begin이 있거나 없는 경우, end가 있거나 없는 경우 또는 begin이 end 보다 뒤에 있는 경우 모두를 case를 나눠서
return 해야합니다.

1. Between markers 문제 풀이
처음엔 text.index(begin)과 같이 index 함수를 통해서 begin이 text에 위치한 index 값들을 return 받아서
이 값으로 case를 나눠보려고 했습니다.
그렇지만 만약 text에 begin 값이 존재 하지않을 때, index 함수는 error를 return해서 방법을 바꿔보았습니다.
사실 if문 안에서
if begin in text:
와 같이 문자열안에 문자(열) 이 있는지 바로 판단이 가능하다는 걸 이번 문제를 통해 알게되서 이 방법을 사용했습니다.
다중 if문으로 case를 구분해 보았고 해당 case들의 오른쪽에 어떤 경우에 return 하는 값인지 주석을 달아놨습니다.
순서대로 case들을 나눠보자면
1. begin과 end가 모두 있지만 begin이 end보다 뒤에 있을 때 -> return ' '
2. begin과 end가 모두 정상적인 위치에 있을 때 -> begin과 end 사이의 문자열 return (인덱스 슬라이싱)
3. begin은 있고 end는 없을 때 -> begin 뒤의 모든 문자열 return
4. begin은 없고 end는 있을 때 -> end 앞의 모든 문자열 return
5. begin과 end가 모두 없을 때 -> text 문자열 모두 출력

본 포스팅의 내용 및 이미지를 무단 전재, 재배포 또는 복사를 금지합니다.
인용 시 출처와 같이 공개해주세요!
도움이 되셨다면 댓글 또는 공감 부탁드립니다!
댓글