[C++, 프로그래머스 - Lv.0] 겹치는 선분의 길이
사용 언어 : C++
< 문제 내용 >
< 생각 >
라인의 최대 길이는 -100 ~ 100까지다.
큰 수가 아니기 때문에 최소 -100부터 최대 100까지 수를 가지고 있는 변수를 배열로 만들어준다.
만든 배열에 매개로 전달받은 lines들의 수에 맞게끔 더해준다.
음수에서 받을 수 있기 때문에 큰 수와 작은 수를 비교할 수 있어야 한다.
수를 배열에 더해주었을 때, 1보다 수가 크다면 겹쳤다고 판정내린다.
그리고 수가 1이라면, 겹치지 않았다고 판별할 수 있다.
< 해결 내용 >
#include <string>
#include <vector>
using namespace std;
int solution(vector<vector<int>> lines) {
int answer = 0;
int arr[200] = { 0, };
for (int i = 0; i < lines.size(); ++i) {
int startNum = lines[i][0];
int endNum = lines[i][1];
if (startNum > endNum) {
int temp = startNum;
startNum = endNum;
endNum = temp;
}
for (int j = startNum; j < endNum; ++j) {
arr[j + 100]++;
}
};
for (int i = 0; i < 200; ++i) {
if (arr[i] > 1) answer++;
}
return answer;
}
'코테 > 프로그래머스' 카테고리의 다른 글
[C++, 프로그래머스 - Lv.0] 주사위 게임 3 (0) | 2023.07.19 |
---|---|
[C++, 프로그래머스 - Lv.0] 연속된 수의 합 (0) | 2023.07.19 |
[C++, 프로그래머스 - Lv.0] 안전지대 (0) | 2023.07.19 |
[C++, 프로그래머스 - Lv.0] 정수를 나선형으로 배치하기 (0) | 2023.07.04 |
[C++, 프로그래머스 - Lv.0] 옹알이 (1) (0) | 2023.07.04 |