https://school.programmers.co.kr/learn/courses/30/lessons/120876
def solution(lines):
line = [0] * 201 # 0 ~ 200
for s, e in lines:
for i in range(s + 100, e + 100):
line[i] += 1
return sum(1 for i in line if i > 1)
lines
를 순회하며 선분이 지나가는 인덱스에 1
을 더했다.1
보다 크면 1
씩 더하여 반환했다.def solution(lines):
s1 = set(i for i in range(lines[0][0], lines[0][1]))
s2 = set(i for i in range(lines[1][0], lines[1][1]))
s3 = set(i for i in range(lines[2][0], lines[2][1]))
return len((s1 & s2) | (s2 & s3) | (s1 & s3))
lines
가 3
의 고정 길이를 갖고 있어 나오는 풀이같다.&
와 intersection()
은 교집합 연산으로, 겹치는 부분을 반환한다.|
와 union()
은 합집합 연산으로, 두 집합이 합쳐진 집합을 반환한다.-
와 difference()
는 차집합 연산으로, 겹치는 부분을 제거한 집합을 반환한다.피드백은 언제나 환영입니다 :)