[백준] 5073

당당·2023년 4월 23일
0

백준

목록 보기
45/179

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

📔문제

삼각형의 세 변의 길이가 주어질 때 변의 길이에 따라 다음과 같이 정의한다.

  • Equilateral : 세 변의 길이가 모두 같은 경우
  • Isosceles : 두 변의 길이만 같은 경우
  • Scalene : 세 변의 길이가 모두 다른 경우

단 주어진 세 변의 길이가 삼각형의 조건을 만족하지 못하는 경우에는 "Invalid" 를 출력한다. 예를 들어 6, 3, 2가 이 경우에 해당한다.
가장 긴 변의 길이보다 나머지 두 변의 길이의 합이 길지 않으면 삼각형의 조건을 만족하지 못한다.

세 변의 길이가 주어질 때 위 정의에 따른 결과를 출력하시오.


📝입력

각 줄에는 1,000을 넘지 않는 양의 정수 3개가 입력된다. 마지막 줄은 0 0 0이며 이 줄은 계산하지 않는다.


📺출력

각 입력에 맞는 결과 (Equilateral, Isosceles, Scalene, Invalid) 를 출력하시오.


📝예제 입력 1

7 7 7
6 5 4
3 2 5
6 2 6
0 0 0

📺예제 출력 1

Equilateral
Scalene
Invalid
Isosceles

🔍출처

ICPC > Regionals > South Pacific > South Pacific Region > New Zealand Programming Contest > NZPC 2012 B번
-문제의 오타를 찾은 사람: corea, lety
-잘못된 번역을 찾은 사람: jh05013
-문제를 번역한 사람: john6014
-잘못된 데이터를 찾은 사람: kookmin20103324


🧮알고리즘 분류

  • 수학
  • 구현
  • 기하학

📃소스 코드

import java.util.Scanner;

import javax.xml.validation.Validator;

public class Code5073 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner=new Scanner(System.in);
		
		boolean isRoop=true;
		int a=0,b=0,c=0;
		
		while(isRoop) {
			a=scanner.nextInt();
			b=scanner.nextInt();
			c=scanner.nextInt();
			
			if(a==0 && b==0 && c==0) {
				isRoop=false;
				break;
			}
			if(isValid(a,b,c)){
				if(a==b) {
					if(a==c) {
						System.out.println("Equilateral");
					}
					else {
						System.out.println("Isosceles");
					}
				}
				else if(a==c) {
					System.out.println("Isosceles");
				}
				else if(b==c) {
					System.out.println("Isosceles");
				}
				else {
					System.out.println("Scalene");
				}
			}
			else {// Not Valid
				System.out.println("Invalid");
			}
				
		}
	}

	public static boolean isValid(int a, int b, int c) {
		boolean isValid=true;
		if(a<b) {
			if(b<c) { //c is max
				if(c>=a+b) {
					isValid=false;
				}
			}
			else { // b is max
				if(b>=c+a) { 
					isValid=false;
				}
			}
		}
		else { // a>b
			if(a<c) {//c is max
				if(c>=a+b) { 
					isValid=false;
				}
			}
			else { // a is max
				if(a>=c+b) {
					isValid=false;
				}
			}
			
		}
		return isValid;
	}

}

📰출력 결과


📂고찰

이전 문제처럼 if문을 사용해서 해결했다.

만약, 입력값이 0 0 0이면, while문을 종료시킨다.

isValid 함수를 만들어서 삼각형이 맞는지 아닌지를 테스트했다.
만약 유효하면, true를 반환하고 그렇지 않으면 false를 반환한다.

이후 내용은 이전 문제를 같다!
profile
MySQL DBA 신입 지원

0개의 댓글