본문 바로가기

코딩테스트

프로그래머스 겹치는 선분의 길이 level0 python

def solution(lines):
    answer = 0
    total = []
    first = list(set(range(lines[0][0], lines[0][1])) & set(range(lines[1][0], lines[1][1])))
    second = list(set(range(lines[0][0], lines[0][1])) & set(range(lines[2][0], lines[2][1])))
    third = list(set(range(lines[1][0], lines[1][1])) & set(range(lines[2][0], lines[2][1])))
    
    total = first + second + third
    answer = (len(set(total)))
    return answer

우선 선분은 3개로 고정이 되어있다. 선분을 1,2,3으로 가정하면, 1과2의 겹치는 선분,1,3이 겹치는 선분

2,3이 겹치는 선분에서 1,2,3이 겹치는 선분을 빼주면 된다. 겹치는 걸 뺴주는 과정에서 1,2,3의 교집합을 하나의 list로 만들어준다음

set으로 바꾸어주면 교집합이 빠지게 된다