[프로그래머스 / C++] 겹치는 선분의 길이

YH·2023년 8월 17일
0

문제

겹치는 선분의 길이 : 문제 링크


문제 분석

  • 선분 3개가 평행하게 놓여 있고, 세 선분의 시작과 끝 좌표가 [[start, end], [start, end], [start, end]] 형태로 들어있는 2차원 배열 lines가 매개변수로 주어질 때, 두 개 이상의 선분이 겹치는 부분의 길이를 return
  • start, end의 범위는 아래와 같으므로 200 크기의 check라는 변수명의 배열을 만듬

    -100 <= start < end <= 100

  • 이중 for loop을 사용하여 각 원소의 start 및 end의 범위까지 (index + 100)의 위치의 값을 1씩 늘림. 이후 index 0부터 199까지 검사하여 저장된 값이 1보다 큰 경우, 즉 선분이 두 개 이상 겹친곳을 세서 그때마다 answer을 1씩 늘림. 최종적으로 저장된 answer을 return

풀이

#include <vector>

using namespace std;

int check[200];

int solution(vector<vector<int>> lines) {
    int answer = 0;
    
    for(int i = 0; i < lines.size(); ++i) {
        for(int j = lines[i][0]; j < lines[i][1]; ++j) check[j + 100]++;
    }
    
    for(int i = 0; i < 200; ++i) {
        if(check[i] > 1) answer++;
    }
    return answer;
}
profile
Keep Recycling Your Dreams

1개의 댓글

comment-user-thumbnail
2023년 8월 17일

좋은 글 감사합니다. 자주 올게요 :)

답글 달기