[백준] 5073번 삼각형과 세 변 Java 문제 풀이

2023. 3. 21. 18:13알고리즘/백준

728x90
반응형

문제풀이

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;

interface Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        StringTokenizer st;

        Map<Integer, Boolean> angle = new HashMap<Integer, Boolean>();
        int[] len = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
        while(len[0] != 0) {
            angle.clear();
            Arrays.sort(len);
            angle.put(len[0], true);
            angle.put(len[1], true);
            angle.put(len[2], true);

            if(len[2] < len[0] + len[1]) {
                if (angle.size() == 1) {
                    System.out.println("Equilateral");
                } else if (angle.size() == 2) {
                    System.out.println("Isosceles");
                } else {
                    System.out.println("Scalene");
                }
            } else {
                System.out.println("Invalid");
            }
            len = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
        }
    }
}

무조건 양의 정수값만 주어지므로 0이 있을 경우 바로 반복을 종료합니다.

 

변의 길이를 비교하여 삼각형인지 아닌지를 확인해야 하기 때문에 배열을 정렬하여 가장 끝 자리 값과 나머지 값을 비교했습니다.

 

삼각형의 길이를 Key 값으로 하는 HashMap을 생성했습니다.

HashMap은 Key의 중복을 허용하지 않기 때문에 같은 길이를 넣어주게 되면 새로 저장되지 않고 같은 Key에 덮어쓰기가 됩니다.

그래서 맵의 크기가 각각 1, 2, 3이면 Equilateral, Isosceles, Scalene를 출력하면 됩니다.

 

 

 

 

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

 

5073번: 삼각형과 세 변

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

www.acmicpc.net

 

728x90
반응형