프로그래머스/Lv.1
카드 뭉치 - Python, List 에서 특정 값 삭제하
아찌방
2024. 10. 30. 16:15
https://school.programmers.co.kr/learn/courses/30/lessons/159994
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
풀이 - 나의 생각
주어진 카드 뭉치에서
순서대로 꺼내 써서 만들어야 하기 때문에
리스트의 맨 앞을 확인하면서
빼가면 된다.
풀이는 별로 중요치 않고
그 방법을 기억하고자 기록한다.
List에서 특정 값을 빼는 방법이 여러가지 있다.
1. remove()
2. pop()
3. del
1.remove()
# reomve는 특정 값을 찾아 제거 합니다.
list = [1,2,3,4]
list.remove(2)
print(list) #[1, 3, 4]
######################################
#동일한 값이 있을 때는 앞에 있는 것만 제거된다.
list = [1,2,3,4,1]
list.remove(1)
print(list) #[2, 3, 4, 1]
2. pop()
# 특정 인덱스의 요소를 제거한다.
list = [1, 2, 3, 4]
list.pop(1)
print(list) #[1, 3, 4]
###############################
# 기본은 가장 마지막 인덱스 이다.
list = [1, 2, 3, 4]
list.pop()
print(list) #[1, 2, 3]
3. del
# 특정 인덱스 또는 범위의 요소 제거
# 특정 인덱스 요소 제거
list = [1, 2, 3, 4]
del list[0]
print(list) #[2, 3, 4]
#######################################
# 범위 요소 제거
list = [1, 2, 3, 4]
del list[0:2]
print(list) #[3, 4]
4. 리스트 컴프리헨션을 사용한 조건에 따른 제거
#특정 조건을 만족하는 요소들을 제외하고 새 리스트를 만듬
numbers = [1, 2, 3, 2, 4]
numbers = [num for num in numbers if num != 2]
print(numbers) #[1, 3, 4]
속도
1. DEL
(인덱스 기반) ->
2. pop
(O(1), 그냥 쓸 경우 더 빠름) ->
3. 리스트 컴프리헨션을 사용한 조건에 따른 제거
( 새로운 리스트를 생성하기 때문에 메모리를 추가로 사용, 조건이 많을 수록 느려짐) ->
4. remove()
(특정 요소를 찾아서 제거해야하기에 늦음, 뒤로 갈수록 늦음)
코드
def solution(cards1, cards2, goal):
answer = 'Yes'
for word in goal:
if len(cards1) > 0 and cards1[0] == word:
del cards1[0]
elif len(cards2) > 0 and cards2[0] == word:
del cards2[0]
else:
return 'No'
return answer
728x90