선분 3개가 평행하게 놓여 있습니다. 세 선분의 시작과 끝 좌표가 [[start, end], [start, end], [start, end]] 형태로 들어있는 2차원 배열 lines가 매개변수로 주어질 때, 두 개 이상의 선분이 겹치는 부분의 길이를 return 하도록 solution 함수를 완성해보세요.
lines가 [[0, 2], [-3, -1], [-2, 1]]일 때 그림으로 나타내면 다음과 같습니다.

선분이 두 개 이상 겹친 곳은 [-2, -1], [0, 1]로 길이 2만큼 겹쳐있습니다.
lines의 길이 = 3lines의 원소의 길이 = 2lines의 원소는 [a, b] 형태이며, a, b는 각각 선분의 양 끝점 입니다.class Solution {
public int solution(int[][] lines) {
//1.arr 배열 및 변수 초기화
int answer = 0;
int[] arr=new int[200];
//2.lines 정보를 arr 배열에 적용
for(int i=0; i<lines.length; i++){
//음수일 수 있어서, +100을 해주어 치환
for(int j=lines[i][0]+100; j<lines[i][1]+100; j++){
arr[j]++;
}
}
//3.arr 배열에서 겹친 부분 카운트
for(int i=0; i<200; i++){
if(arr[i] >1){
answer++;
}
}
return answer;
}
}
| 좌표 값 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
|---|---|---|---|---|---|---|---|---|---|---|
| arr | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 좌표 값 | 0 | ... | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | ... | 200 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| arr | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 좌표 값 | 0 | ... | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | ... | 200 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| arr (선분[0,1]) | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| arr (선분[2,5]) | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| arr (선분[3,9]) | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 |
| arr (최종) | 0 | 0 | 1 | 0 | 1 | 2 | 2 | 1 | 1 | 1 | 1 | 0 | 0 | 0 |