DB/SQL

[HackerRank : SQL - oracle] Type of Triangle

nokii 2022. 10. 14. 11:01

[문제]

삼각형 표의 각 레코드 유형을 식별하는 쿼리를 3개의 변 길이를 사용하여 작성합니다. 표의 각 레코드에 대해 다음 문장 중 하나를 출력합니다.

등변(equilateral) : 3변이 같은 길이의 삼각형입니다.
이등변(isosceles) : 2변이 같은 길이의 삼각형입니다.
스케일린(scalene) : 길이가 다른 3변을 가진 삼각형입니다.
삼각형이 아님(not a triangle) : A, B, C의 주어진 값은 삼각형을 이루지 않는다.

 

 

[풀이]

SELECT
CASE 
WHEN NOT ((a+b>c) AND (a+c>b) AND (b+c>a)) THEN 'not a triangle'
WHEN a = b AND b = c THEN 'equilateral'
WHEN a = b OR b = c OR c = a THEN 'isosceles'
ELSE 'scalene'
END 
FROM triangles;

 

  • CASE WHEN ELSE END : CASE로 조건문의 시작을 알리고 END로 닫아준다. WHEN은 IF문과 같이 조건을 달아줄때 사용하며, THEN으로 조건의 결과값을 지정해준다. AND, OR 등의 연산자로 여러 조건을 만들어 줄 수 있다. ELSE를 이용해 마지막 단락에 조건을 생략하여 THEN만 달아줄 수 있다.

 

차례대로 설명하자면,

  • not a triangle (삼각형이 아님) : 우선 삼각형의 성립 조건을 만든 후 WHEN에 NOT 을 붙여 삼각형이 아닌 조건을 만들어주었다. 참고로 삼각형의 성립조건삼각형에서 가장 긴 변의 길이는 나머지 두 변의 길이의 합보다 작다는 조건이다.

 

  • equilateral (3변이 같은 길이의 삼각형) : AND 연산자를 이용하여 a라는 변수로 기준을 잡고 a=b=c의 값이 모두 같을 수 있도록 만들어 주어 정삼각형의 조건을 만들어 주었다.

 

  •  isosceles (2변이 같은 길이의 삼각형) : OR 연산자를 이용하여 2가지의 조건만 성립하도록 만들어 주어 이등변 삼각형의 조건을 만들어 주었다.

 

  • scalene (길이가 다른 3변을 가진 삼각형) : ELSE를 나머지 길이가 다른 삼각형의 조건을 성립 시켰다.  scalene의 조건문은 WHEN a<>b AND b<>c AND c<>a THEN 'scalene'으로 작성해주면 된다. <>연산자는 같지않다 의 조건으로 사용된다.