반응형
[1] 백준 카테고리
단계별로 풀어보기
기본 수학2
9단계 4153번 문제
직각삼각형
https://www.acmicpc.net/problem/4153
[2] 문제
과거 이집트인들은 각 변들의 길이가 3, 4, 5인 삼각형이 직각 삼각형인것을 알아냈다. 주어진 세변의 길이로 삼각형이 직각인지 아닌지 구분하시오.
1. 입력
입력은 여러개의 테스트케이스로 주어지며 마지막줄에는 0 0 0이 입력된다. 각 테스트케이스는 모두 30,000보다 작은 양의 정수로 주어지며, 각 입력은 변의 길이를 의미한다.
2. 출력
각 입력에 대해 직각 삼각형이 맞다면 "right", 아니라면 "wrong"을 출력한다.
3. 예제 입력 1
6 8 10
25 52 60
5 12 13
0 0 0
4. 예제 출력 1
right
wrong
right
[3] 정답
1. 정답 해설 미포함
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
while(true){
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
int c = Integer.parseInt(st.nextToken());
if(a==0 && b==0 && c==0) {
break;
}
if((a*a+b*b)==c*c)
{
System.out.println("right");
}
else if((a*a+c*c)==b*b)
{
System.out.println("right");
}
else if((b*b+c*c)==a*a)
{
System.out.println("right");
}
else
{
System.out.println("wrong");
}
}
}
}
2. 정답 해설 포함
import java.io.BufferedReader;
/* BufferedReader 사용을 위해서 java.io.BufferedReader 클래스를 impot 한다.
Enter를 경계로 인식하고 받은 데이터는 String으로 고정된다*/
import java.io.InputStreamReader;
/* byte 단위 데이터를 문자 단위 데이터로 처리할 수 있도록 변환해주기 위해서
InputStreamReader를 사용한다.
InputStreamReader 사용을 위해서 java.io.InputStreamReader 클래스를 import 한다.*/
import java.io.IOException;
/* 예외 처리를 위해서 IOException 사용한다.
IOException 사용을 위해서 java.io.IOException 클래스를 import 한다.*/
import java.util.StringTokenizer;
/* 공백 단위로 호출하기 위해서 StringTokenizer를 사용한다
StringTokenizer를 사용하기 위해서
StringTokenizer java.util.String 클래스를 import 한다.*/
public class Main {
// 접근제어자 public으로 Main 클래스를 선언한다.
public static void main(String[] args) throws IOException{
// 접근제어자 public으로 메모리에 상주하고 리턴값이 없이 main 함수를 선언한다.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//BufferedReader 객체 br를 선언한다.
while(true){
// while문을 선언한다 (true)므로 break문이 나오기 전까지 무한 반복하게 된다.
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
// StringTokenizer 객체 st를 선언한다 이제 공백으로 값을 입력받을 수 있다.
int a = Integer.parseInt(st.nextToken());
/* int형 변수 a를 선언하고 값을 공백 단위로 구분해서 입력받는다.
Inter.parseInt()로 String 변수를 int형으로 변환시킨다.*/
int b = Integer.parseInt(st.nextToken());
/* int형 변수 b를 선언하고 값을 공백 단위로 구분해서 입력받는다.
Inter.parseInt()로 String 변수를 int형으로 변환시킨다.*/
int c = Integer.parseInt(st.nextToken());
/* int형 변수 c를 선언하고 값을 공백 단위로 구분해서 입력받는다.
Inter.parseInt()로 String 변수를 int형으로 변환시킨다.*/
if(a==0 && b==0 && c==0) {
// 변수 a 값이 0이고 b값이 0이면서 c값이 0일때 괄호안의 코드가 실행된다.
break;
// while문을 빠져나온다.
}
if((a*a+b*b)==c*c)
// a*a+b*b값이 c*c와 같을 때 괄호안의 코드가 실행된다.
{
System.out.println("right");
// right 문자열이 출력된다.
}
else if((a*a+c*c)==b*b)
// a*a+c*c 값이 b*b와 같을 때 괄호안의 코드가 실행된다.
{
System.out.println("right");
// right 문자열이 출력된다.
}
else if((b*b+c*c)==a*a)
// b*b+c*c 값이 a*a와 같을 때 괄호안의 코드가 실행된다.
{
System.out.println("right");
// right 문자열이 출력된다.
}
else
// 모두 해당되지 않을 때 괄호안의 코드가 실행된다.
{
System.out.println("wrong");
// wrong 문자열이 출력된다.
}
}
}
}
피타고라스 정리를 이용해서 풀어주면된다.
if((a*a+b*b)==c*c)
{
System.out.println("right");
}
else if((a*a+c*c)==b*b)
{
System.out.println("right");
}
else if((b*b+c*c)==a*a)
{
System.out.println("right");
}
else
{
System.out.println("wrong");
}
피타고라스 정리 알고리즘이다. 어느 변수가 대각선인지 가로인지 세로인지 모르기 때문에 3가지 케이스를 각각 비교해 보아야 된다.
반응형
'프로그래밍 > 백준 문제 풀이(자바)' 카테고리의 다른 글
백준 1002번 자바 문제 답/해설(터렛 문제) (0) | 2022.01.01 |
---|---|
백준 3053번 자바 문제 답/해설(택시 기하학 문제) (0) | 2021.12.31 |
백준 3009번 자바 문제 답/해설(네 번째 점 문제) (0) | 2021.12.29 |
백준 1085번 자바 문제 답/해설(직사각형에서 탈출 문제) (0) | 2021.12.28 |
백준 9020번 자바 문제 답/해설(골드바흐의 추측 문제) (0) | 2021.12.27 |