20200817 // 삼성 SW Expert 아카데미 문제 // 10580

2020. 8. 17. 12:32Programming/SW Expert Academy

삼성 SW Expert 아카데미 10580번 "전봇대" 문제입니다.

TC = int(input())   
ans = []
for tc in range(1, TC + 1):
    k = "#"+str(tc) + " "
    N = int(input())
    count = 0
    lst = []
    for i in range(N):
        a, b = map(int, input().split())
        for e in lst:
            if (a - e[0]) * (b - e[1]) < 0:
                count += 1
        lst.append((a,b))
    k += str(count)
    ans.append(k)
for e in ans:
    print(e)

전선을 연결하는 양 쪽 위치를 입력 받고 이미 연결되어있는 전선들의 양 쪽 위치와 비교를 한다. 세 선이 한 점에서

 

만나는 경우의 수는 없다고 하였으므로 새로 입력받은 위치들에서 기존에 연결되어 있던 위치를 빼서 곱했을 때에

 

양수일 경우는 교차가 안되었다는 말이고 음수일 경우에는 전선이 교차되어서 교점이 생겼다는 말이므로 교차되었을 때

 

카운트를 증가시켜주면 총 교점의 개수가 나오게 된다.