📖 오늘의 학습 키워드
정렬
[Minimum Lines to Represent a Line Chart]
https://leetcode.com/problems/minimum-lines-to-represent-a-line-chart/description/
class Solution {
public int minimumLines(int[][] stockPrices) {
if(stockPrices.length == 1) {
return 0;
}
Arrays.sort(stockPrices, (a, b) -> a[0] - b[0]);
int answer = 1;
for(int i = 2; i < stockPrices.length; i++) {
if((stockPrices[i-1][1] - stockPrices[i][1]) * (stockPrices[i-2][0] - stockPrices[i-1][0]) != (stockPrices[i-2][1] - stockPrices[i-1][1]) * (stockPrices[i-1][0] - stockPrices[i][0])) {
answer++;
}
}
return answer;
}
}
if((stockPrices[i-1][1] - stockPrices[i][1]) * (stockPrices[i-2][0] - stockPrices[i-1][0]) != (stockPrices[i-2][1] - stockPrices[i-1][1]) * (stockPrices[i-1][0] - stockPrices[i][0]))
조건문은 아래 식과 같으며, 직전의 기울기와 현재 기울기가 같은지를 확인한다. 기울기가 다르면 이전과 다른 새로운 선을 그려야 하므로 answer의 값을 늘려야 한다.처음에는 기울기를 y의 값의 증가량을 x의 값의 증가량으로 나눈 값으로 구해 직전의 기울기와 비교했다. 하지만 이를 제출하면 후반 테스트 케이스에서 문제가 발생했다. 라이브 세션 때 멘토님께서 코딩테스트에서 나누기가 필요한 경우 최대한 곱하기로 바꿔서 풀어보라고 이야기해주셨다.