Study/Baekjoon

Baekjoon4153: 직각삼각형

devyoseph 2021. 10. 14. 05:56

문제

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

입력

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

출력

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

풀이1

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"); 
		} 
	 }
}
}

 

풀이2

0 0 0을 입력받기 전까지는 반복문이 지속된다 → 일단 while(true) {   } 안에서 지속하다가 입력값을 0 0 0 받으면 break;

Scanner을 통해 값들을 배열에 넣어준다 → 그후 배열을 Arrays.sort()로 정렬해준다

정렬했다면 arr의 3개의 index는 index[0] <= index[1] <= index[2] 인 상태이므로 2번 index는 자동적으로 최대값이 된다

즉 index[2]==0인 순간 index[1]과 index[2]도 0이 되는 것이다

나머지는 if문을 통해 피타고라스 정리가 성립하는지 확인해준다

import java.util.*;
public class Main {
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		int[] arr=new int[3];
		while(true) {
			for(int i=0;i<3;i++) {
				arr[i]=sc.nextInt();
			}
			Arrays.sort(arr);
			if(arr[2]==0) break;
			else if(arr[2]*arr[2]==arr[0]*arr[0]+arr[1]*arr[1]) {
				System.out.println("right");
			}else System.out.println("wrong");
		}
}}

 

숏코딩

import java.util.*;
public class Main {
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		int[] arr=new int[3];
		while(true) {
			for(int i=0;i<3;i++)arr[i]=sc.nextInt();
			Arrays.sort(arr);
			if(arr[2]==0) break;
			else System.out.println(arr[2]*arr[2]==arr[0]*arr[0]+arr[1]*arr[1]?"right":"wrong");
}}}