[백준] 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개의 댓글

관련 채용 정보