문제 설명
선분 3개가 평행하게 놓여있을때, 두 개 이상의 선분이 겹치는 부분의 길이를 return
https://school.programmers.co.kr/learn/courses/30/lessons/120876?language=cpp
문제 풀이법
선분이 그려지는 구간을 담는 배열 line[201]을 선언한다
이때 선분의 구간은 -100부터 100까지이지만 배열은 음수 인덱스를 가질 수 없으니 구간에서 100을 더한 값을 인덱스로 가진다
벡터를 돌면서 해당하는 구간에 +1을 한다
이때 선분이 겹쳐야하므로, 구간의 첫 부분은 제외한다
이제 배열 line을 돌면서 값이 2이상이면 answer에 1을 더해주며 총 겹쳐있는 선분의 길이를 세준다
소스 코드
#include <string>
#include <vector>
using namespace std;
int solution(vector<vector<int>> lines) {
int answer = 0;
int line[201] = {0};
for (vector<int> tmp : lines) {
for (int i = tmp[0] + 1; i <= tmp[1]; i++)
line[i + 100]++;
}
for (int i = 0; i < 201; i++) {
if (line[i] >= 2)
answer++;
}
return answer;
}
'Algorithm Study' 카테고리의 다른 글
[프로그래머스] 1단계 - 과일 장수 (0) | 2023.12.22 |
---|---|
[프로그래머스] 0단계 - 안전지대 (0) | 2023.12.22 |
[프로그래머스] 0단계 - 평행 (0) | 2023.12.20 |
[프로그래머스] 0단계 - 옹알이(1) (0) | 2023.12.20 |
[백준] 10026 적록색약 (0) | 2023.03.17 |