[HakerRank]Type of Triangle

SQL-쿼리테스트

목록 보기
3/21

Q)

Write a query identifying the type of each record in the TRIANGLES table using its three side lengths. Output one of the following statements for each record in the table:

  • Equilateral: It's a triangle with sides of equal length.
  • Isosceles: It's a triangle with sides of equal length.
  • Scalene: It's a triangle with sides of differing lengths.
  • Not A Triangle: The given values of A, B, and C don't form a triangle.

A)

SELECT 
CASE
    WHEN A + B <= C OR A + C <= B OR B + C <= A THEN "Not A Triangle"
    WHEN A = B AND B = C THEN "Equilateral"
    WHEN A = B OR A = C OR B = C THEN "Isosceles"
    ELSE "Scalene"
END AS triangle_type
FROM TRIANGLES;

Basic 문제를 모두 풀고 처음 접한문제로, 삼각형 유형을 찾아 조회하는 문제로 재미있는문제다.

위 조건을 살펴보면

  • Equilateral(정삼각형): 세변의 길이가 같은 경우.
  • Isosceles(이등변삼각형): 두변의 길이가 같은 경우.
  • Scalene(세변의 길이가 다른 삼각형 ): 세 변의 길이가 모두 다른 경우.
  • Not A Triangle: 삼각형이 아님.

처음에는 조건의 논리적인 순서를 신경쓰지 않고 작성하여 문제에 통과하지 못했다.

조건의 논리적인 순서를 잘생각하고 순서에 맞춰 조건을 조회하도록 해야하며 조건의 순서는 다음과 같다.

1) A + B <= C OR A + C <= B OR B + C <= A 조건을 통해 주어진 변들이 삼각형을 형성할 수 있는지를 먼저 확인. ( Not A Triangle )

2) A = B AND B = C 조건을 통해 모든 변이 같은 경우를 확인. ( Equilateral )

3) A = B OR A = C OR B = C 조건을 통해 두 변이 같은 경우를 확인. 여기서는 "Isosceles"가 "Equilateral"보다 뒤에 오도록 해야한다 (Isosceles)

4)"Scalene"는 나머지 경우로, 모든 변이 서로 다른 경우 (Scalene)

2번과 3번의 순서가 중요한대 다음과 같은 경우가 있다고 해보자

  • A = 3, B = 3, C = 3인 경우:
    Equilateral 조건: A = B AND B = C가 참이므로, 이 경우는 "Equilateral"로 분류
    Isosceles 조건: 이 경우는 평가되지 않음.

  • A = 3, B = 3, C = 2인 경우:
    Equilateral 조건: A = B AND B = C가 거짓이므로, 이 조건은 평가되지 않습니다.
    Isosceles 조건: A = B가 참이므로, 이 경우는 "Isosceles"로 분류.

만약 그 순서가 3번이 먼저, 2번이 그 다음이라면

  • A = 3, B = 3, C = 3인 경우:
    Isosceles 조건: A=B OR A=C OR B=C 의 조건에 해당되므로 Isosceles 로 분류.
    Equilateral 조건 : 이 경우 평가하지 않음.
  • A = 3, B = 3, C = 2인 경우:
    Isosceles 조건: A=B OR A=C OR B=C 의 경우 A=B 에 해당되므로 "Isosceles" 로 분류
    Equilateral 조건: 이 경우 평가하지 않음.

이처럼 그 순서에 따라 주어진 조건을 이등변삼각형, 정삼각형을 구분하는 경우가 달라질 수 있다.


이번 문제를 풀어보며 조건의 순서의 중요성에 대해서도 다시 한번 생각해보게 되었다.

profile
살아남기 위해 끄적이는 블로그 : 생존법

0개의 댓글