- 선분 3개가 평행하게 놓여 있습니다. 세 선분의 시작과 끝 좌표가 [[start, end], [start, end], [start, end]] 형태로 들어있는 2차원 배열 lines가 매개변수로 주어질 때, 두 개 이상의 선분이 겹치는 부분의 길이를 return 하도록 solution 함수를 완성해보세요.
- lines가 [[0, 2], [-3, -1], [-2, 1]]일 때 그림으로 나타내면 다음과 같습니다.
- 선분이 두 개 이상 겹친 곳은 [-2, -1], [0, 1]로 길이 2만큼 겹쳐있습니다.
lines의 길이 = 3
lines의 원소의 길이 = 2
모든 선분은 길이가 1 이상입니다.
lines의 원소는 [a, b] 형태이며, a, b는 각각 선분의 양 끝점 입니다. -100 ≤ a < b ≤ 100
- 숫자 겹치는 걸로 확인하면 편리하다.
- 근데 방문 여부로 풀이해보고 싶어서 풀었다가 시간만 20분 걸림.
- 방문 여부 false 요소 200개에서 방문하면 true 겹치면 h로 고정한 후 h요소 count해서 출력
def solution(lines):
visited = ['F' for i in range(200)]
for i in lines:
for j in range(i[0]+100,i[1]+100):
print(j)
if visited[j] == 'F':
visited[j] = 'T'
elif visited[j] =='T':
visited[j] = 'H'
else:
continue
print(visited)
return visited.count('H')
def solution(lines): sets = [set(range(min(l), max(l))) for l in lines] return len(sets[0] & sets[1] | sets[0] & sets[2] | sets[1] & sets[2])
- 완전 대박!
- 양 끝 값 제외하고 list append, 세 개의 list 교집합 개수 출력