티스토리 뷰

반응형
 

4153번: 직각삼각형

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

www.acmicpc.net

 

풀이

import sys
a,b,c=list(map(int,sys.stdin.readline().split()))
while a!=0 and b!=0 and c!=0:
    if (a**2)+(b**2)==c**2 or (b**2)+(c**2)==a**2 or (a**2)+(c**2)==b**2:
        print('right')
    else:
        print('wrong')
    a,b,c=list(map(int,sys.stdin.readline().split()))​

 

직각삼각형의 기본공식은 A^2+B^2=C^2 이라는 걸 모르는 사람은 없을 것이다,

문제는 이걸 알고리즘으로 만드는 것이 문제.

 

정말 다양한 방법으로 할 수 있겠지만, 위 코드에서 쓴 방법은 while 문이다.

 

마지막 줄에 0을 입력받는다고 했으므로, a=0,b=0,c=0 이 되었을 때 while이 끝나야 해서 a!=0 and b!=0 and c!=0.

 

그리고 a나 b가 c일 수도 있으므로, 3가지 케이스 중에 하나를 비교하거나, sort를 해서 c를 확정으로 만들어 주면 된다.

 

if (a**2)+(b**2)==c**2 or (b**2)+(c**2)==a**2 or (a**2)+(c**2)==b**2:

혹은

a=list(map(int,sys.stdin.readline().split()))
a.sort
if (a[0]**2)+(a[1]**2)==a[2]**2:

 

마지막에는 다음 줄을 읽어주면 끝.

 

처음에 a,b,c를 읽어주는 이유는 간단하다. while 문에서 사용해야 하기 때문이다.

 

이런 방식으로 출력하면 쉽게 만들 수 있다.

반응형