Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
관리 메뉴

forest_moon

겹치는 선분의 길이 본문

알고리즘

겹치는 선분의 길이

rokga 2023. 4. 7. 14:24

문제 설명

선분 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  
    • 입출력 예 설명입출력 예 #1
      • 두 번째, 세 번째 선분 [2, 5], [3, 9]가 [3, 5] 구간에 겹쳐있으므로 2를 return 합니다.
      입출력 예 #2
      • 겹친 선분이 없으므로 0을 return 합니다.
      입출력 예 #3
      • 첫 번째와 두 번째 선분이 [3, 5] 구간에서 겹칩니다.
      • 첫 번째와 세 번째 선분 [1, 5] 구간에서 겹칩니다.
      • 두 번째와 세 번째 선분 [3, 9] 구간에서 겹칩니다.
      • 따라서 [1, 9] 구간에 두 개 이상의 선분이 겹쳐있으므로, 8을 return 합니다.
class Solution {
    public int solution(int[][] lines) {
        int[] arr = new int[200];        
        int answer = 0;
        
        for(int i=0; i < lines.length; i++){
            for(int j= lines[i][0] + 100; j < lines[i][1] + 100; j++){
             arr[j] ++;   
            }
        }
        for(int i= 0 ; i < 200 ; i++){
            if(arr[i] > 1 ) {
                answer ++;
            }
        }
        return answer;
    }
}

*** 겹치는 점이아닌 선분 

**범위가 -100   ~ 100 이라 음수의 값을 표현할수 없으니 . 100을 추가해서  0~200으로 범위를 변경.

 

lines의 값을 arr의 배열에 해당하는 좌표값을 넣고 ,  배열에서 겹치는 부분(2이상) 을 카운트

 

 

 

'알고리즘' 카테고리의 다른 글

등수 매기기  (0) 2023.04.08
유한소수 판별하기  (0) 2023.04.07
저주의 숫자 3  (0) 2023.04.05
외계어 사전  (0) 2023.04.05
삼각형의 완성조건 (2)  (0) 2023.04.05