https://leetcode.com/problems/triangle-judgement/description/
Column Name | Type |
x | int |
y | int |
z | int |
Triangle 테이블:
- 각 행은 세 선분의 길이입니다.
세 선분이 삼각형을 이룰 수 있다면 Yes, 아니라면 No를 반환하세요.
세 선분이 삼각형을 이루기 위해서는 가장 큰 선분의 길이가 나머지 두 선분의 길이보다 작아야한다. 따라서 x, y, z중 가장 긴 열의 길이가 나머지 두 열의 합보다 작아야한다.
열 간의 숫자 비교는 max()를 사용할 수 없었기 때문에 검색을 통해서 Greatest()를 찾아서 사용했다. 그리고 가장 큰 숫자를 찾는 것은 쉬워도 나머지 두 숫자를 걸러내는 것은 또 다른 문제였기 때문에 x, y, z를 전부 더하고 가장 큰 수를 빼주는 방법으로 나머지 두 숫자의 합을 구했다. 따라서 x + y + z - 가장큰수 > 가장큰수 가 Ture일 경우 삼각형을 이룰 수 있는데 이항을 통해서 식을 간소화했다.
select
x,
y,
z,
case
when (x + y + z) > GREATEST(x, y, z) * 2 then 'Yes'
else 'No'
end triangle
from Triangle
Greatest()는 이번에 처음 알게되었다.
sql문제라기보다는 알고리즘 문제라는 느낌이 강하게 들었던 문제였다.
'코딩일기' 카테고리의 다른 글
알고리즘 코드카타 109 - 연속된 부분 수열의 합 (0) | 2024.07.06 |
---|---|
알고리즘 코트카타 - 21 ~ 25 (자바스크립트) (0) | 2024.07.05 |
알고리즘 코드카타 108 - 삼각 달팽이 (1) | 2024.07.05 |
알고리즘 코트카타 - 16 ~ 20 (자바스크립트) (0) | 2024.07.04 |
SQL 코드카타 107 - Primary Department for Each Employee (0) | 2024.07.04 |