Algorithm(CodeTree, Python)/완전탐색2

[코드트리 물체 단위로 완전탐색] 선분 3개 지우기 python

kurooru 2022. 12. 19. 13:01
# n 입력
n = int(input())
# line_pos
line_pos = list()
# line_pos 입력
for _ in range(n):
    line_pos.append(tuple(map(int, input().split())))

# 함수들
# is_duplicated(a, b, c)
def is_duplicated(a, b, c):

    # temp -> 선분들의 영역을 표시해 줄 리스트
    temp = [0] * 101

    # 영역 표시 시작
    for i in range(n):
        
        # 영역 표시하지 않을 선분일 경우
        if i == a or i == b or i == c:
            # skip
            continue
        
        # 영역 표시할 선분일 경우
        # 언팩킹
        s, e = line_pos[i]

        # 영역 표시
        for j in range(s, e+1):
            temp[j] += 1
    
    # 표시된 영역에서
    for i in range(101):
        # 겹치는 선분이 있으면,
        if temp[i] >= 2:
            # 겹침
            return True
    
    # 다 돌았는데 없으면 
    # 안겹침
    return False

# 설계
# cnt
cnt = 0

# 완전 탐색 시작
for i in range(n-2):
    for j in range(i+1, n-1):
        for k in range(j+1, n):
            # 3개의 선분을 제거했을 때 겹치지 않으면
            if not is_duplicated(i, j, k):
                # cnt 올려주기
                cnt += 1

# 출력
print(cnt)