코딩테스트 연습/프로그래머스

[Python - 프로그래머스] 요격시스템

슈퍼짱짱 2023. 6. 15. 09:05
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/181188

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 


Solution

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def solution(targets):
    targets = sorted(targets, key = lambda x:-x[1])
    # print("Sorted Targets : ",targets,"\n")
 
    i = 0
    while len(targets) > 0 :
        now = targets.pop()
        i += 1
        # print("now : ", now)
 
        if len(targets) > 0 :
            while ((targets[-1][0< now[1]) & (targets[-1][1>= now[1])):
                targets.pop()
                if len(targets) == 0 :
                    break
 
    return i
cs

 

target을 내림차순으로 정렬한 다음, 뒤에서부터 pop하여 확인한다.

즉, 뒤에서부터 오름차순인 셈.

 

처음에는 반대로 오름차순으로 정렬해서 했더니

[[0,4], [0,1], [2,3]] -> 2 의 Case에서 틀렸다.

 

다른 사람들의 풀이를 보니 굳이 pop 하지 않고 그냥 for문으로 처음부터 훓으면서 +1 하는식으로 한다. 

그게 더 효율적인 것 같기도.

 

반응형