실패...
다른 사람 코드 1
def solution(myStr):
s = myStr.replace('b', 'a')
s = s.replace('c', 'a')
s = s.split('a')
answer = []
for x in s :
if x : # x가 빈 문자열이 아니면
answer.append(x)
if not answer : # answer가 빈문자열이면 즉, s가 빈문자열만 있어서 아무것도 추가되지 않았다면
return ["empty"] # empty 반환
return answer
다른 사람 코드 2
def solution(myStr):
answer = [x for x in myStr.replace('a', ' ').replace('b', ' ').replace('c', ' ').split() if x]
return answer if answer else ['empty']
- myStr 에서 'a', 'b', 'c' 를 공백(' ')으로 대체
- split( ) : 공백을 기준으로 분리하여 list 생성
- [x for x in ... if x] : 리스트 comprehension을 사용하여, split()으로 생성된 리스트에서 빈 문자열('')이 아닌 요소만 필터링
- 조건 if x 는 문자열 x가 빈 문자열이 아닐 때만 참
다른 사람 코드 3
import re
def solution(myStr):
answer = [m for m in re.split('a|b|c', myStr) if m]
if len(answer) == 0 :
answer = ['empty']
return answer
1. re.split('a|b|c', myStr)
- 정규식을 사용하여 문자열 myStr을 'a', 'b', 'c'로 나누어 분리합니다.
- 'a|b|c'는 'a' 또는 'b' 또는 'c'를 기준으로 분리하라는 정규식입니다.
- re.split은 기준 문자(여기서는 'a', 'b', 'c')를 제거하고 나머지 부분을 리스트로 반환합니다.
- 예시:
- 입력: "abcda"
- 결과: ["", "", "", "d", ""] (빈 문자열 포함).
2. [m for m in re.split('a|b|c', myStr) if m]
- 리스트 컴프리헨션을 사용하여 re.split 결과 리스트에서 빈 문자열("")을 제외합니다.
- 조건 if m은 문자열 m이 빈 문자열이 아닌 경우에만 m을 결과 리스트에 포함시킵니다.
- 예시:
- 입력 리스트: ["", "", "", "d", ""]
- 결과: ["d"].
3. if len(answer) == 0:
- answer 리스트가 비어 있는지 확인합니다.
- 파이썬에서 빈 리스트의 길이는 0이므로, len(answer) == 0 조건이 참이면 answer에 ["empty"]를 할당합니다.
- 예시:
- answer = [] → answer = ["empty"].
4. return answer
- 최종적으로 answer 리스트를 반환합니다.
- answer가 비어 있지 않다면 answer를 그대로 반환하고, 비어 있다면 ["empty"]를 반환합니다.
'코딩 테스트 > 프로그래머스' 카테고리의 다른 글
[Python] 프로그래머스 lv.0 문자열 묶기 (0) | 2024.11.25 |
---|---|
[Python] 프로그래머스 lv.0 배열의 길이를 2의 거듭제곱으로 만들기 (0) | 2024.11.25 |
[Python] 프로그래머스 lv.0 문자열 잘라서 정렬하기 (0) | 2024.11.11 |
[Python] 프로그래머스 lv.0 공백으로 구분하기 2 (0) | 2024.11.10 |
[Python] 문자열이 몇 번 등장하는지 세기 (0) | 2024.11.10 |