본문 바로가기

코딩테스트/백준

[백준-자바/파이썬] 4153번 직각삼각형 / 2021.09.26

https://www.acmicpc.net/problem/4153

 

4153번: 직각삼각형

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

www.acmicpc.net

 

 

1.Java

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(true) {
            int a = sc.nextInt();
            int b = sc.nextInt();
            int c = sc.nextInt();
            int A = a*a;
            int B = b*b;
            int C = c*c;
            
            if(a==0 && b==0 && c==0) {
                break;
            }
            
            if(A==B+|| B==A+|| C==B+A){
                System.out.println("right");
            }
            else{
                System.out.println("wrong");
            }
        }    
    }
}
cs

 

 

풀이 :

직각삼각형의 성질만 알면 너무 쉬운 문제이다.

가장 큰 변의 제곱이 나머지 변들의 제곱의 합과 같으면 된다.

조건 중에 세 변이 다 0이 입력되면 종료하라 했음으로 if문 안에 break처리를 해주었다.

그 다음 if문에서는 입력받은 값들의 제곱값들을 넣은 변수들을 비교해주었다.

직각삼각형의 조건에 부합하면 rigth를 출력 부합하지않으면 wrong을 출력한다.

 

 

2. Python

 

1
2
3
4
5
6
7
8
9
10
11
12
13
while True:
    a, b, c = map(int, input().split(" "))
    A = a*a
    B = b*b
    C = c*c
 
    if(a==0 and b==0 and c==0):
        break
 
    if(A==B+or B==A+or C==A+B):
        print("right")
    else:
        print("wrong")
cs

 

풀이 :

파이썬도 자바와 같은 방식으로 풀었다.

int형 여러개를 입력받는 부분에서 map을 사용하였다.

같은 풀이지만 확실히 파이썬이 단순하긴 하다.