문자열 배열 strArr가 주어집니다. 배열 내의 문자열 중 "ad"라는 부분 문자열을 포함하고 있는 모든 문자열을 제거하고 남은 문자열을 순서를 유지하여 배열로 return 하는 solution 함수를 완성해 주세요.
not Keyword
- The not keyword is a logical operator.
- The return value will be True if the statement(s) are not True, otherwise it will return False.
- not True -> False
x = False
print(not x) # True
code
def solution(strArr):
answer = []
for i in strArr:
if "ad" not in i:
answer.append(i)
else:
continue
return answer
- 코드 설명
- "ad"가 i에 존재하지 않는다면 새로운 배열에 i값 추가
- 존재한다면 continue(새로운 배열에 값을 추가하지 않음
🤔 pop이나 remove 메서드는 왜 안 쓰나요?
- 위 문제를 해결하기 위해 pop이나 remove 메서드를 사용할 수 있지만, 리스트의 요소를 제거할 때 인덱스가 변경될 수 있기 때문에 주의해야 함
- 반복문을 사용하여 요소를 제거할 경우, 인덱스 문제로 인해 모든 요소를 제대로 처리하지 못할 수 있음
- 그럼에도 불구하고 pop(), remove()를 쓰고 싶다면? 인덱스를 직접 관리하자
def solution(strArr):
i = 0
while i < len(strArr):
if "ad" in strArr[i]:
strArr.remove(strArr[i])
else:
i += 1
return strArr
- 코드 설명
- while 루프 문, 인덱스 i를 직접 설정하여 리스트 순회
- "ad"가 포함되어 있다면 해당 요소 제거
- 이때 i가 증가되지 않기에 다음 루프에서도 동일한 인덱스에 대해 다시 검사함 (= 인덱스 직접 관리)
- index는 제거되지 않은 요소(="ad"가 없는 요소)에 대해서만 수행됨
https://github.com/seonmin5/codingtest_Python
GitHub - seonmin5/codingtest_Python
Contribute to seonmin5/codingtest_Python development by creating an account on GitHub.
github.com
반응형
'Python' 카테고리의 다른 글
[Python/level 0] 암호 해독 - 120892, Slicing (0) | 2024.08.03 |
---|---|
[Python/level 0] 양꼬치 - 120830, O(n) vs O(1) 풀이법 비교 (0) | 2024.08.03 |
[Python] 정규식 - 함수, 메타문자, 특수 시퀀스 (0) | 2024.08.03 |
[Python/level 0] 아이스 아메리카노 - 120819, [money // 5500, money % 5500] (0) | 2024.07.29 |
[Python/level 0] 피자 나눠 먹기 (1) - 120814, (n-1) // 7+1 (2) | 2024.07.29 |