세조목

SQL 예제(Triangle Judgement) 본문

데이터 분석 공부/SQL

SQL 예제(Triangle Judgement)

세조목 2024. 2. 21. 10:26

610. Triangle Judgement

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

 

문제의 제목에서도 알 수 있듯 이 문제는 삼각형을 찾는 문제다.

왜인지 모르겠으나 처음 이 문제를 보고서 내가 접근한 방식은

가장 큰 변의 길이가 나머지 두 변 길이의 합보다 작은 조건을 생각했다.

그렇게 작성한 코드는 아래와 같은데

SELECT X, Y, Z, IF(((X+Y+Z) - BIG) > BIG, 'Yes', 'No') TRIANGLE
FROM 
(
    SELECT X, Y, Z, GREATEST(X, Y, Z) BIG
    FROM TRIANGLE
) BIG_TABLE

이렇게 해도 정답 처리가 되기는 한다.

 

혹시나 싶어 다른 분들이 작성하신 정답을 확인해보니 아래와 같이 굉장히 간단했다.

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

 

처음에는 왜 AND를 썼는지 이해되지 않았는데

삼각형의 조건을 알고보니 이해가됐다.

삼각형이 되려면 두 변의 길이가 나머지 한 변의 길이보다 커야한다.

 

'그럼 OR 조건 써도 되는거 아니야?'

 

라는 의문이 생길수도 있다.

나도 그랬는데 삼각형의 조건을 다시 한 번 보면

두 변의 길이가 나머지 한 변의 길이보다 커야하는 조건이 모든 경우에 적용돼야한다.

예를 들어 X, Y, Z가 있는데

X+Y는 Z보다 큰데 Y+Z가 X보다 작은 경우에는 삼각형이라고 할 수 없다.