Lim Seunghyun Space

[HackerRank] Type of Triangle 본문

SQL/SQL 문제

[HackerRank] Type of Triangle

Lim Seung Hyun 2021. 11. 30. 15:55

문제 : https://www.hackerrank.com/challenges/what-type-of-triangle/problem?isFullScreen=true 

 

Type of Triangle | HackerRank

Query a triangle's type based on its side lengths.

www.hackerrank.com

 

문제 해설

  • TRIANGLES 테이블의 A, B, C에 조건을 이용하여 어떤 유형인지 출력하기
    • Equilateral : 3변의 길이가 모두 같을시
    • Isosceles : 2변의 길이가 같을시
    • Scalene : 3변의 길이가 모두 다를시
    • Not A Triangle : 삼각형의 형태가 될 수 없을시 (A + B <= C)

 

나의 풀이 (MySQL)

SELECT 
    CASE
    WHEN A + B <= C THEN "Not A Triangle"
    WHEN A != B AND B != C AND A != C THEN "Scalene"
    WHEN A = B AND B = C THEN "Equilateral"
    WHEN A = B OR A = C OR B = C THEN "Isosceles"
    END
FROM TRIANGLES
  • CASE WHEN : if 문처럼 조건을 두어 값을 처리
CASE
WHEN 조건 THEN 값 END

--> 조건에 맞으면 값을 리턴 아니면 NULL 리턴
  • CASE WHEN은 중첩으로 하여 IF-ELSE 처럼 사용 가능
CASE
WHEN 조건1 THEN 값1
WHEN 조건2 THEN 값2
...
END

--> 조건1에 맞으면 값1 리턴 아니면 조건2로 넘어감, 조건2가 맞으면 값2 리턴 아니면 다음 조건으로 넘어감. 마지막까지 조건에 걸리지 않는다면 NULL 리턴
  • 조건의 순서에서 고려해야하는 점
    • 값 중에 A = 20, B = 20, C = 40가 있는데 
      • WHEN A = B OR A = C OR B = C THEN "Isosceles"
        WHEN A + B <= C THEN "Not A Triangle"
      • 예상하는 결과는 Not A Triangle이지만 위의 순서대로 작성하면 Isosceles가 리턴됨
      • > Isosceles에 대한 조건보다 Not A Triangle에 대한 조건이 우선적으로 처리가 되어야 한다.
    • 값 중에 A = 40, B = 40, C = 40이 있는데
      • WHEN A = B OR A = C OR B = C THEN "Isosceles"
        WHEN A = B AND B = C THEN "Equilateral"
      • 예상하는 결과는 Equilateral이지만 위의 순서대로 작성하면 Isosceles가 리턴됨
      • > Isosceles의 조건보단 Equilateral에 대한 조건이 우선적으로 처리가 되어야 한다.
728x90

'SQL > SQL 문제' 카테고리의 다른 글

[Leetcode] 182. Duplicate Emails  (0) 2022.03.23
[Leetcode] 181. Employees Earning More Than Their Managers  (0) 2022.03.23
[HackerRank] The PADS  (0) 2021.11.29
[HackerRank] Employee Salaries  (0) 2021.11.22
[HackerRank] Employee Names  (0) 2021.11.22