-
1232. Check If It Is a Straight Line javaLeetCode_Study_Plan/Programming Skills 2022. 9. 20. 21:48
기본부터 다시.. 자바의 자료형을 잘 모르니까 많은 실수가 있었다.
자바의 기초부터 제대로 공부해야겠다..ㅎ
package com.company; import java.util.*; class Solution { public boolean checkStraightLine(int[][] coordinates) { // x = n선 판별용 int cnt = 0; for (int x = 1; x < coordinates.length; x++){ if (coordinates[x][0] == coordinates[x-1][0]) { cnt += 1; } } if (cnt == coordinates.length - 1){// x = n이 맞음 return true; } if (cnt > 0) { // x값 몇 개만 같기에 Division error 발생 return false; } float y_diff = coordinates[1][1] - coordinates[0][1]; float x_diff = (coordinates[1][0] - coordinates[0][0]); float inclination = y_diff/x_diff; for(int i = 2 ; i < coordinates.length; i++){ float y_diff_tmp = coordinates[i][1] - coordinates[i-1][1]; float x_diff_tmp = coordinates[i][0] - coordinates[i-1][0]; float inclination_tmp = y_diff_tmp/x_diff_tmp; System.out.println(inclination); System.out.println(inclination_tmp); if (inclination_tmp != inclination) return false; } return true; } public static void main(String[] args){ Solution sol = new Solution(); int[][] coordinates = {{1,1},{2,2},{3,4},{4,5},{5,6},{7,7}}; System.out.println(sol.checkStraightLine(coordinates)); } }
성능이 너무 안좋아서.. 잘 쓴 답안을 찾아보니 왠걸, 나는 division error를 막기 위해 시간복잡도 O(N)을 한번 순회하는데
나누기를 하지 않는 방식으로 한방에 푼 게 있었다..
모든 등식은 다시 조합해서 생각해봐야겠다..ㅎ 아래는 그 예시이다.
class Solution { public boolean checkStraightLine(int[][] coordinates) { int x0 = coordinates[0][0]; int y0 = coordinates[0][1]; int x1 = coordinates[1][0]; int y1 = coordinates[1][1]; int dx = x1 - x0; int dy = y1 - y0; for (int i = 2; i < coordinates.length; ++i) { int x = coordinates[i][0]; int y = coordinates[i][1]; if ((x - x0) * dy != (y - y0) * dx) return false; } return true; } }
'LeetCode_Study_Plan > Programming Skills' 카테고리의 다른 글
283. Move Zeroes java (0) 2022.09.20 1588. Sum of All Odd Length Subarrays java (1) 2022.09.20 496. Next Greater Element I java (0) 2022.09.20 589. N-ary Tree Preorder Traversal java (0) 2022.09.20 1790. Check if One String Swap Can Make Strings Equal java (0) 2022.09.20