문제 설명
선분 3개가 평행하게 놓여 있습니다. 세 선분의 시작과 끝 좌표가 [[start, end], [start, end], [start, end]] 형태로 들어있는 2차원 배열 lines가 매개변수로 주어질 때, 두 개 이상의 선분이 겹치는 부분의 길이를 return 하도록 solution 함수를 완성해보세요.
선분이 두 개 이상 겹친 곳은 [-2, -1], [0, 1]로 길이 2만큼 겹쳐있습니다.
제한사항
lines의 길이 = 3
lines의 원소의 길이 = 2
모든 선분은 길이가 1 이상입니다.
lines의 원소는 [a, b] 형태이며, a, b는 각각 선분의 양 끝점 입니다.
-100 ≤ a < b ≤ 100
입출력 예
lines | result |
---|---|
[[0, 1], [2, 5], [3, 9]] | 2 |
[[-1, 1], [1, 3], [3, 9]] | 0 |
[[0, 5], [3, 9], [1, 10]] | 8 |
필수 키워드
아이디어의 중요성을 느꼈다.
리스트로 모든 선분과 겹쳐진 부분을 생각하는 아이디어의 도출이 중요했다.
구현 코드
def solution(lines):
# 길이가 200인 리스트(선분의 길이를 넣을 리스트)
list_lines=[0]*200
# 선분의 시작과 끝값이 음수가 될 경우가 있기 떄문에 100씩 다 더한다
for i in lines:
start = i[0]+100
end = i[1] + 100
for j in range(start,end):
list_lines[j] = list_lines[j] + 1
# list_lines를 돌면서 값이 2 이싱인경우 answer에 1씩 더한다.
answer = 0
print(list_lines)
for i in list_lines:
if i > 1:
answer = answer + 1
return answer