빨간색, 초록색, 파란색 선분이 x축 위에 있습니다. 세 선분의 x좌표 시작과 끝이 [[start, end], [start, end], [start, end]] 형태로 들어있는 2차원 배열 lines
가 매개변수로 주어질 때, 두 개 이상의 선분이 겹치는 부분의 길이를return 하도록 solution 함수를 완성해보세요.
lines
가 [[0, 2], [-3, -1], [-2, 1]]일 때 그림으로 나타내면 다음과 같습니다.
class Solution {
public int solution(int[][] lines) {
int answer = 0;
//-100 ~ 100 = 200 -> -100 + 100 = 0이니까 [0] 사용하기 위해 201로 선언
int[] totalArray = new int[201];
//확장 for문
for(int[] line : lines){
//최대값
int maxVal = Math.max(line[0], line[1]);
int minVal = Math.min(line[0], line[1]);
//중복되는 경우 +1이 되어서 밑쪽에서 1보다 큰 경우 count 됨
for(int i = minVal; i < maxVal; i++){
totalArray[i+100]++;
}
}
for (int i = 0; i < totalArray.length; i++) {
//1보다 큼 = 중첩 => ++
if (totalArray[i] > 1) {
answer++;
}
}
return answer;
}
}
댓글
댓글 쓰기