Baekjoon4153: 직각삼각형

Baekjoon4153: 직각삼각형

문제

과거 이집트인들은 각 변들의 길이가 3, 4, 5인 삼각형이 직각 삼각형인것을 알아냈다. 주어진 세변의 길이로 삼각형이 직각인지 아닌지 구분하시오.

입력

입력은 여러개의 테스트케이스로 주어지며 마지막줄에는 0 0 0이 입력된다. 각 테스트케이스는 모두 30,000보다 작은 양의 정수로 주어지며, 각 입력은 변의 길이를 의미한다.

출력

각 입력에 대해 직각 삼각형이 맞다면 "right", 아니라면 "wrong"을 출력한다.

추상화

1) 각각의 값을 제곱해서 저장한다

2) 저장하는 동안 최대값을 구해서 max변수에 저장한다

3) 배열에서 max와 같은 값을 가지는 값을 찾고 맨 앞으로 이동한다(arr[0])

4) 맨 앞 index와 나머지 index들의 관계식으로 조건문을 만든다

같으면 'right', 틀리면 'wrong'을 출력한다

import java.io.*; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st; int max = 0; int[] arr = new int[3]; while(true) { max =0; st = new StringTokenizer(br.readLine()," "); for(int i =0; i<3; i++) { arr[i] = (int) Math.pow(Integer.parseInt(st.nextToken()),2); if(arr[i]>max) { max = arr[i]; } //값을 받는 동시에 제곱해주고 최대값을 탐색한다 } if(arr[0]==0 && arr[1]==0 && arr[2]==0) { break; } // 0 0 0을 받으면 종료한다 for(int i =0; i<3; i++) { int temp = 0; if(arr[i]==max) { temp = arr[0]; arr[0] = arr[i]; arr[i] = temp; } //값을 일시적으로 받아주는 temp에 저장하고 최대값을 맨 앞으로 옮긴다 } if(arr[0] != arr[1]+arr[2]) { System.out.println("wrong"); } if(arr[0] == arr[1]+arr[2]) { System.out.println("right"); } } } }

from http://devyoseph.tistory.com/67 by ccl(A) rewrite - 2021-10-14 06:02:19