https://school.programmers.co.kr/learn/courses/30/lessons/159994
풀이 - 나의 생각
주어진 카드 뭉치에서
순서대로 꺼내 써서 만들어야 하기 때문에
리스트의 맨 앞을 확인하면서
빼가면 된다.
풀이는 별로 중요치 않고
그 방법을 기억하고자 기록한다.
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
'프로그래머스 > Lv.1' 카테고리의 다른 글
바탕화면 정리 - Python (0) | 2024.11.04 |
---|---|
행렬의 덧셈 - Python, ZIP (0) | 2024.11.01 |
프로그래머스 > 옹알이(2) - Python, re.sub() (0) | 2024.10.27 |
코딩테스트 연습 > 대충 만든 자판 Pyton (0) | 2024.10.25 |
정수 제곱근 판별 - JAVA, double과 long 비교 (0) | 2024.05.25 |