https://programmers.co.kr/learn/courses/30/lessons/87377
#include <string>
#include <vector>
#define NUM 1000000000000000
using namespace std;
vector<string> solution(vector<vector<int>> line) {
vector<pair<long long, long long>> stars;
long long minX = NUM, maxX = -NUM, minY = NUM, maxY = -NUM;
for (int i = 0; i < line.size(); i++) {
for (int k = i + 1; k < line.size(); k++) {
long long mod = (long long)line[i][0] * line[k][1] - (long long)line[i][1] * line[k][0];
if (mod == 0) continue;
long long bfed = (long long)line[i][1] * line[k][2] - (long long)line[i][2] * line[k][1] ;
long long ecaf = (long long)line[i][2] * line[k][0] - (long long)line[i][0] * line[k][2];
if (bfed % mod || ecaf % mod) {
continue;
}
long long x = bfed / mod, y = ecaf / mod;
stars.push_back({ x,y });
minX = min(minX, x); minY = min(minY, y);
maxX = max(maxX, x); maxY = max(maxY, y);
}
}
string row = string(maxX - minX + 1, '.');
vector<string> answer(maxY - minY + 1, row);
for (int i = 0; i < stars.size();i++) {
long long x = stars[i].first, y = stars[i].second;
answer[abs(y - maxY)][abs(x - minX)] = '*';
}
return answer;
}
사람들이 왜 안하는지 알겠는 문제..
테스트 케이스 27,28에 자꾸 메모리 초과가 뜨길래 애먼 변수들만 줄이고 있었다.
문제는 min, max 값의 초기값이 너무 작았던 것이다..
'전공공부 > 코딩테스트' 카테고리의 다른 글
(c++) 백준 "2527. 직사각형" (0) | 2022.05.21 |
---|---|
(c++) 프로그래머스 "빛의 경로 사이클" (0) | 2022.05.21 |
(c++) 프로그래머스 "전력망을 둘로 나누기" (0) | 2022.05.17 |
(c++) 프로그래머스 "모음사전" (0) | 2022.05.14 |
(c++) 프로그래머스 "[3차] 방금 그곡" (0) | 2022.05.14 |