본문 바로가기
📝 PS/프로그래머스 (Python)

[프로그래머스] 요격 시스템 (파이썬, Python)

by Safetymo 2023. 4. 15.

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

 

프로그래머스

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

programmers.co.kr

 

첫번째 풀이(통과)

 

def solution(targets):
    answer = 1
    targets.sort(key = lambda x:x[0])
    
    inner = targets[0]
    
    for i in range(1, len(targets)):
        
        if inner[1] > targets[i][0]:
            inner = [max(targets[i][0], inner[0]), min(inner[1], targets[i][1])]
        else:
            inner = targets[i]
            answer += 1 
        
    
    return answer

 

1. 파이썬 정렬 알고리즘은 O(NlogN) -> 평균이긴 하나 거의 보장해줌

 

해결 방법을 고민하는데 시간이 좀 걸림

우선 타겟을 오름차순으로 정렬한 뒤, 겹치는 부분이 없다면 추가를 해주는 방식으로 알고리즘을 짰다.

 

람다를 요긴하게 잘써먹는 중

댓글