본문 바로가기
SQL/MySQL

[MySQL] HackerRank - Type of Triangle 문제 풀이 / CASE WHEN

by 취준생 져니 2024. 10. 18.

문제 사이트

아래 문제는 해커랭크에서 추출해온 문제입니다. 문제의 저작권은 해커랭크에 있으며 문제를 풀어보시려면 아래 링크를 클릭해주세요 🙂

 

 

Type of Triangle | HackerRank

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

www.hackerrank.com

 

 


 

 

 

 

 

👉문제 설명

 

 

 

 

 

 

 

👉문제 풀이

CASE WHEN 절을 사용하여 조건문을 만들 수 있는가를 판별하는 문제

 

전체적인 로직

1) A = B = C 세 변의 길이가 같으면 Equilateral

2) 두 변의 길이만 같다면 Isosceles

3) 세 변의 길이가 모두 다르면 Scalene

4) 두 변의 합 < 한 변의 길이 이면 Not A Triangle

 

 

👉문제 풀이 과정

1. CASE WHEN 절 사용하여 삼각형 분류

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
FROM triangles

 

  • 조건에 따라 삼각형 타입을 분류하여야 하므로 CASE문 사용

 

 

 

 

👉알아야 할 것, 배운 것

CASE WHEN 절을 사용할 때 순서가 중요함

  • CASE WHEN : 순서대로 조건문을 돌며 맨 위에 조건을 만족하지 않는다면 밑에 조건으로 이동
SELECT
    CASE
        WHEN 조건A THEN A
        WHEN 조건B THEN B
		ELSE C END (AS 원하는 컬럼명)
FROM TABLE
  • Not A Triangle을 제외하고는 '두 변의 길이의 합 > 한 변의 길이' 라는 삼각형 조건을 만족하므로 Not A Triangle 먼저 고려해줌
  • Equilateral : 삼각형 조건 만족 AND A = B = C 
  • Isosceles : 삼각형 조건 만족 AND 두 변의 길이 같음
  • Scalene : 삼각형 조건 만족 AND 세 변의 길이 다 다름
  • Not A Triangle : 삼각형 조건 만족하지 않음

공통된 조건이 많은 것 : 삼각형 조건

Not A Triangle 을 제외하고는 모두 삼각형 조건을 만족해야만 한다

따라서 첫 조건을 삼각형을 만족하지 않으면 Not A Triangle 로 두고

이 조건을 만족하지 않는 (즉 삼각형 조건을 만족시키는) Equilateral, Isosceles, Scalene 은 아래 조건에 둠

 

 

👉고찰

순서를 고려하는게 생각보다 어렵다는 생각을 했다. 

공통적인 조건이 무엇인지, 어떤 조건이 특이한지를 생각해본 후 코드를 짜는 연습을 해야할 거 같다.