-
[4153번] 직각삼각형 - Java알고리즘 연습 2021. 11. 9. 21:11
https://www.acmicpc.net/problem/4153
4153번: 직각삼각형
입력은 여러개의 테스트케이스로 주어지며 마지막줄에는 0 0 0이 입력된다. 각 테스트케이스는 모두 30,000보다 작은 양의 정수로 주어지며, 각 입력은 변의 길이를 의미한다.
www.acmicpc.net
1. 배운점
- 직각삼각형을 구하는 공식을 활용한다.(가장 긴 변의 제곱 = 나머지 두 변의 제곱의 합)
- 경우의 수를 나누어 값이 어떤 순서로 들어와도 가장 긴 변을 가려낼 수 있도록 한다.
2. 개선할 점
3. 궁금한 점
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { // import java.io.BufferedReader BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); while(true) { // 테스트 케이스 받기 String [] caseNum = br.readLine().split(" "); int sideOne = Integer.parseInt(caseNum[0]); int sideTwo = Integer.parseInt(caseNum[1]); int sideThree = Integer.parseInt(caseNum[2]); // 반복문 종료 조건 : 0, 0, 0 if (sideOne == 0) { break; } // 직각삼각형이 맞는지 출력 System.out.println(isRightTriangle(sideOne, sideTwo, sideThree)); } } // 직각삼각형 판별 메서드 private static String isRightTriangle(int sideOne, int sideTwo, int sideThree) { // 기본값 right로 설정 String message = "right"; // 가장 크기가 큰 변 파악 int max = sideOne; int num1 = 0; int num2 = 0; // 1번째 변이 max인 경우 if(max >= sideTwo && max >= sideThree) { num1 = sideTwo; num2 = sideThree; } // 2번째 변이 max인 경우 else if (sideTwo > max && sideTwo >= sideThree) { max = sideTwo; num1 = sideOne; num2 = sideThree; } // 3번째 변이 max인 경우 else { max = sideThree; num1 = sideOne; num2 = sideTwo; } // 직각 삼각형이 아니라면 wrong 출력 if ((max*max) != (num1*num1) + (num2*num2)) { message = "wrong"; } return message; } }
'알고리즘 연습' 카테고리의 다른 글
[1157번] 단어공부 -Java (0) 2021.11.11 [1316번] 그룹 단어 체커 - Java (0) 2021.11.09 [3009번] 네 번째 점 - Java (0) 2021.11.09 [2775번] 부녀회장이 될테야 -Java (0) 2021.11.08 [10250번] ACM 호텔 - Java (0) 2021.11.08