Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

개발자도전

[프로그래머스] 삼각형의 완성 조건 본문

프로그래머스 코딩 테스트

[프로그래머스] 삼각형의 완성 조건

도do 2023. 4. 1. 18:07
728x90

[문제]

선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다.

  • 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다.

삼각형의 세 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다. 세 변으로 삼각형을 만들 수 있다면 1, 만들 수 없다면 2를 return하도록 solution 함수를 완성해주세요.

 

제한사항

  • sides의 원소는 자연수입니다.
  • sides의 길이는 3입니다.
  • 1 ≤ sides의 원소 ≤ 1,000

 

[입출력 예]

sides result
[1,2,3] 2
[3,6,2] 2
[199,72,222] 1

 

 

입출력 예 #1

  • 가장 큰 변인 3이 나머지 두 변의 합 3과 같으므로 삼각형을 완성할 수 없습니다. 따라서 2를 return합니다.

입출력 예 #2

  • 가장 큰 변인 6이 나머지 두 변의 합 5보다 크므로 삼각형을 완성할 수 없습니다. 따라서 2를 return합니다.

입출력 예 #3

  • 가장 큰 변인 222가 나머지 두 변의 합 271보다 작으므로 삼각형을 완성할 수 있습니다. 따라서 1을 return합니다.

 

[답]

풀이 1.

처음엔 Math.max 함수를 사용해서 최대 값을 찾고 해당 인덱스를 찾아서 switch문에 넣어서 답을 구해줬다.

속도가 빠르게 나왔지만 간단한 코드임에도 불구하고 코드가 길어져서 다른 방법으로도 풀어보았다.

 

풀이 2.

해당 배열을 정렬해준 후 0번 인덱스와 1번 인덱스 값을 더해서 비교 후 값을 return 시켜주었다.

그러나 코드는 간결해졌지만 switch문을 사용했을 때보다 속도는 느려진 걸 볼 수 있었다.

 

이를 두 코드다 잘 작동하지만 풀이 1번 코드는 시간은 빠르게 나왔지만 코드가 길어졌고,

풀이 2번 코드는 코드 길이는 짧아졌으나 속도는 1번에 비해 느린 것을 보고  chatGPT에게 물어보았다.

 

풀이 1번은 Math.max 함수를 2번 사용하여 약간의 성능 저하가 일어날 수 있고 switch문의 조건이 길어지면 가독성이 떨어질 수 있다는 답변을 해주었고

풀이 2번은 코드는 간결하나 Arrays.sort()함수를 사용해 정렬을 해주나 세 변의 길이가 매우 크면 성능 저하가 일어날 수 있다고 답해주었다.

 


 

질문의 답변을 보면서 많은 생각을 하게되었다.

과연 둘 중 어느 코드가 더 좋은 코드일까?

가독성이 좋지만 성능 저하가 있는 코드 / 코드가 길지만 성능이 우수한 코드

 

개발자라면 언젠가 해당 코드를 유지보수 해야 하기 때문에

이러한 점을 생각한다면 가독성이 좋은 코드가 더 좋을 것 같다는 생각을 하게되었다. 

728x90
Comments