#2 - Bubble sort [쉬움]

2018. 12. 25. 23:06카테고리 없음

728x90

배열의 정렬과 제어문의 활용


문제

세 변의 길이를 실수형으로 입력받아 삼각형의 종류를 출력하는 프로그램을 작성하시오.

(단, 직각삼각형, 정삼각형, 이등변삼각형 이외의 삼각형은 모두 일반삼각형으로 칭하고, 삼각형을 만들 수 없는 경우도 고려해야 한다.)[각주:1]


삼각형이 될 수 없는 조건 : 한 변의 길이가 나머지 두 변의 길이의 합보다 길다.

정삼각형의 조건 : 세 변의 길이가 모두 같다.

직각삼각형의 조건 : 가장 긴 한 변의 길이의 제곱이 나머지 변 각각의 제곱의 합과 같다.

이등변삼각형의 조건 : 어느 두 변의 길이가 서로 같다.



main 함수를 통해 알 수 있듯이, 크게 세 함수를 거쳐 삼각형의 종류를 판별할 수 있다.


1. getArray 함수

- 세 변의 길이(실수형)를 사용자로부터 입력받아 배열에 저장하는 함수

2. Arrangement 함수

- 입력받은 배열을 내림차순으로 정렬하는 함수

- 거품 정렬(Bubble sort) 활용

3. Judgement 함수

- if 조건문을 통해 삼각형의 종류 결정

- Print_Judge 함수에서 switch 제어문으로 결과를 출력




1. getArray


* 각각 세 변수를 정의하는 것보다 서로 같은 자료형이기에 배열을 활용하는 것이 좋다고 생각했다. 




2. Arrangement 


* 입력값을 배열로 저장한 덕분에 정렬도 한결 수월하다.

** 굳이 정렬할 필요는 없었지만, 어떤 것이 최댓값인지 알면 이후 삼각형 종류 판별에 유용하게 활용할 수 있다.[각주:2]




3. Judgement


* 삼각형의 결정 조건에 따라 if 조건문으로 judge 변수에 값을 부여했다. 

** 정삼각형 판별문은 이등변삼각형 판별문의 하위 조건문으로 배치해도 좋다.

*** 앞서 Arrangement 함수를 통해 최댓값을 알고 있으므로, 조건문을 간단하게 쓸 수 있었다.

**** 이등변 여부와 직각 여부는 독립적인 관계이다. 때문에 변수의 값 조절도 독립적으로 이루어지도록 신경썼다.[각주:3]




3-1. Print_Judge


* judge 값에 따라 결과를 출력한다.

** 일의 자리와 십의 자리에 따라 문자열에 단어를 부여하는 형식으로 만들 수도 있다.


실행시간 : 약 1.1ms



  1. 원래라면 문제의 조건에 맞춰 풀이해야겠지만, 기왕 하는 김에 '예각삼각형', '둔각삼각형'도 모두 고려하기로 했다. [본문으로]
  2. 거품 정렬(Bubble sort) 방식을 활용했다. [본문으로]
  3. 이 프로그램에서는 일의 자리의 변화가 십의 자리의 변화에 영향을 주지 못하므로 서로 독립적인 성분으로도 볼 수 있다. [본문으로]
728x90