[백준 문제 풀이] 10101번 삼각형 외우기

Junu Kim·2025년 8월 3일
0
post-thumbnail

[10101] 삼각형 외우기

난이도: ★☆☆☆☆ • solved on: 2025-08-03


문제 요약

  • 문제 유형: 조건문, 구현
  • 요구사항: 세 각의 크기를 입력받아 삼각형의 종류를 판별하라
    • 합이 180이 아니면 "Error"
    • 세 각이 모두 같으면 "Equilateral"
    • 두 각이 같으면 "Isosceles"
    • 세 각이 모두 다르면 "Scalene"

사용 개념

  1. 자료구조

    • int[]: 각도를 저장하는 배열
  2. 알고리즘/기법

    • 단순 조건문 분기 (if-else)
  3. 핵심 키워드

    • 삼각형 판별, 각도 합, 등변/정삼각형

풀이 아이디어

  1. 문제 분해

    • 입력 받은 세 각의 합이 180이 아니면 삼각형이 아님 → "Error" 출력
    • 합이 180이라면, 같은 각의 개수에 따라 출력 분기
  2. 핵심 로직 흐름

    각도 3개 입력 → 합 확인
    → 합 ≠ 180: "Error"
    → 합 = 180:
        → 모두 같음: "Equilateral"
        → 둘만 같음: "Isosceles"
        → 모두 다름: "Scalene"
    ``
    
  3. 예외 처리

    • 모든 입력은 양의 정수로 주어짐 → 별도 입력 유효성 검사는 필요 없음

코드

import java.io.*;

class Main {
    public static void main(String[] args) throws IOException {
        int[] angles = new int[3];
        int sum = 0;
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        for (int i = 0; i < 3; i++) {
            angles[i] = Integer.parseInt(br.readLine());
            sum += angles[i];
        }

        if (sum != 180) {
            System.out.println("Error");
        } else {
            if (angles[0] == angles[1] && angles[1] == angles[2]) {
                System.out.println("Equilateral");
            } else if (angles[0] == angles[1] || angles[1] == angles[2] || angles[0] == angles[2]) {
                System.out.println("Isosceles");
            } else {
                System.out.println("Scalene");
            }
        }
    }
}

시간·공간 복잡도

  • 시간 복잡도: O(1)
  • 공간 복잡도: O(1)

어려웠던 점

  • 딱히 없었다.

배운 점 및 팁

  • 같은 요소의 개수를 셀 때는 모든 쌍을 비교하는 대신 Set을 사용하면 중복 제거를 통해 더 간결하게 구분할 수 있다.
  • 삼각형 문제는 자주 나오는 유형이므로 합 = 180 조건은 가장 먼저 체크해야한다.

참고 및 링크


추가 연습 문제

  • 비슷한 유형:

  • 확장 문제:

    • 삼각형 세 변의 길이로 삼각형 존재 여부 및 종류 판별하기 (입력은 각도가 아닌 길이)
profile
생각이 현실이 될 수 있도록 노력하는 중입니다.

0개의 댓글