[SQL] 610. Triangle Judgement

Hyunjun Kim·2024년 11월 19일
0

SQL

목록 보기
37/44

문제 링크

https://leetcode.com/problems/triangle-judgement/description/

문제 설명

Table: Triangle

+-------------+------+
| Column Name | Type |
+-------------+------+
| x           | int  |
| y           | int  |
| z           | int  |
+-------------+------+
In SQL, (x, y, z) is the primary key column for this table.
Each row of this table contains the lengths of three line segments.
 

Report for every three line segments whether they can form a triangle.

Return the result table in any order.

The result format is in the following example.

 

Example 1:

Input: 
Triangle table:
+----+----+----+
| x  | y  | z  |
+----+----+----+
| 13 | 15 | 30 |
| 10 | 20 | 15 |
+----+----+----+
Output: 
+----+----+----+----------+
| x  | y  | z  | triangle |
+----+----+----+----------+
| 13 | 15 | 30 | No       |
| 10 | 20 | 15 | Yes      |
+----+----+----+----------+

풀이 및 해석

삼각형의 한 변은 나머지 두 변의 길이의 합보다 작아야 하는 조건이 있다.

SELECT *, IF( (x+y>z)AND(y+z>x)AND(z+x>y) , 'Yes', "No" ) triangle
FROM Triangle

생각해보니 CASE WHEN 으로 'No'를 미리 빼는 게 컴퓨터 부담이 덜 갈 것 같았다.

SELECT x,y,z,
    CASE 
    WHEN x+y<=z THEN 'No'
    WHEN y+z<=x THEN 'No'
    WHEN z+x<=y THEN 'No'
    ELSE 'Yes' END AS triangle
FROM Triangle

CASE는 조건을 순차적으로 평가한다. 첫 번째 조건이 만족되면 나머지 조건을 평가하지 않고 바로 결과를 반환함(Short-Circuit Evaluation).

하지만 AND 연산은 (A AND B AND C)와 같이 작성된 경우, A, B, C를 모두 평가해야 최종 결과를 계산할 수 있기 때문에 조건이 많아질수록 연산량이 증가하고, 상대적으로 더 많은 메모리를 사용할 수 있다.

0개의 댓글

Powered by GraphCDN, the GraphQL CDN