• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    미해결

섹션 2- CASE 해커랭크 문제 풀이 질문

20.02.14 07:52 작성 조회수 119

2

일단 저는 

Select CASE

            WHEN A + B <= C OR A + C <= B OR B + C <= A THEN 'Not A Triangle'

            WHEN A = B AND A = C THEN 'Equilateral'

            WHEN A = B OR A = C OR B = C THEN 'Isosceles'

            WHEN A != B AND A !=C AND B != C THEN 'Scalene'

       END

FROM TRIANGLES

위와 같이 문제를 해결했고, 선생님도 거의 비슷하게 문제를 해결한 것을 확인했습니다.

지금 문제와 같은 경우 AND, OR의 개수가 각각의 WHEN 절에 3개 이하가 존재해서 위와 같이 하드코딩으로 적어도 큰 문제가 없다고 보지만, 만약 AND와 OR의 조건의 개수가 점점 늘어나게 된다면 위와 같은 방식은 여러가지 의미로 좋지않다고 생각합니다.

혹시 AND나 OR 같은 조건의 개수를 줄일 수 있는 방법이 있다면 어떻게 하면 효율적으로 AND나 OR을 줄일 수 있을지 알 수 있을까요?

답변 2

·

답변을 작성해보세요.

0

Taek Taek님의 프로필

Taek Taek

질문자

2020.02.14

질문이 명확하지 않았네요 ㅠ 죄송합니다.

제가 궁금한 점은

 WHEN A + B <= C OR A + C <= B OR B + C <= A THEN 'Not A Triangle'

여기 WHEN절을 살펴보면 비교대상이 A, B, C 이 세가지만 존재하기 때문에

비교를 3번만하고 끝이 났지만

만약 비교대상이 A, B, C, D, E , .... , Y , Z 같이 굉장히 많아질 경우

WHEN A 와 B 비교 AND B 와 C의 비교 AND C와 D의 비교 .... 무수히 많은 비교 ... Y 랑 Z의 비교 THEN '무수히 많은 비교의 끝에 얻은 보람'

이런 식으로 WHNE이 굉장히 길어지기 마련인데,

이러한 경우 효율성이 굉장히 떨어진다고 생각되고 만약 쿼리문을 수정해야하는 상황이 되었을 경우 어디를 수정해야하는지 잘 모르는 결과를 초래한다고 생각합니다.

혹시 위와 같은 상황을 효율적으로 해결하는 방안이 있을까요?

입니다!

아무리 고민해봐도 효율적으로 해결하는 방법이 보이지 않아서 질문드렸습니다 ㅜ

바쁘신 시간 쪼개서 답변 해주셔서 감사합니다 :)

0

Taek Taek 님 안녕하세요. 제가 질문의 의도를 파악하지 못했어요ㅠ_

혹시 수도 코드(수행하고 싶은 로직을 완벽한 코드가 아니더라도 적어보는 것)
로 하고싶은 일을 대충이라도 표현해주실 수 있을까요?

혹시 질문이, 다른 프로그래밍 언어들 같이 변수를 만드는 일을 할 수 있는지 물어보신 건가요?

pseudo-code: https://medium.com/djangogirlsseoul-codecamp/%EC%9D%98%EC%82%AC%EC%BD%94%EB%93%9C-pseudo-code-%EB%9E%80-d892a3479b1d