본문 바로가기
프로그래머스/Lv.1

카드 뭉치 - Python, List 에서 특정 값 삭제하

by 아찌방 2024. 10. 30.

 

 

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