본문 바로가기
코딩테스트/백준

[백준 10101번] 삼각형 외우기 (브론즈 IV) - Java/자바

by 머그워트 2023. 6. 23.
728x90

문제

링크

알고리즘 분류: 구현, 기하학
정답비율 56% (2023.06.23 기준)

 

문제 

창영이는 삼각형의 종류를 잘 구분하지 못한다. 따라서 프로그램을 이용해 이를 외우려고 한다.
삼각형의 세 각을 입력받은 다음,

  • 세 각의 크기가 모두 60이면, Equilateral
  • 세 각의 합이 180이고, 두 각이 같은 경우에는 Isosceles
  • 세 각의 합이 180이고, 같은 각이 없는 경우에는 Scalene
  • 세 각의 합이 180이 아닌 경우에는 Error

를 출력하는 프로그램을 작성하시오.

 

입력

총 3개의 줄에 걸쳐 삼각형의 각의 크기가 주어진다. 모든 정수는 0보다 크고, 180보다 작다.

 

출력

문제의 설명에 따라 Equilateral, Isosceles, Scalene, Error 중 하나를 출력한다.

 

예제 입력 1

60
70
50

 

예제 출력 1

Scalene

 

풀이

정말 심플한 조건 처리 문제라고 생각했는데 생각보다 정답률도 낮고 관련 질문도 많은 문제다.

elseelse if를 순서대로 제대로 사용한다면 누구든 해결할 수 있는 문제다.

아래의 조건문은 이미 위의 조건을 만족하지 않은 것이라는 것을 유념하여 else if 처리를 하면 된다.

 

코드

import java.io.*;

public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
        int a = Integer.parseInt(br.readLine());
        int b = Integer.parseInt(br.readLine());
        int c = Integer.parseInt(br.readLine());
		
        if(a == 60 && b == 60 && c == 60) {
            System.out.println("Equilateral");
        } else if(a + b + c != 180) {
            System.out.println("Error");
        } else if(a == b || b == c || a == c) {
            System.out.println("Isosceles");
        } else {
            System.out.println("Scalene");
        }
    }
}

 

해결 과정

  1. BufferedReader를 이용하여 삼각형의 각 3개를 입력받는다.
  2. 세 각의 크기 a, b, c가 모두 60이면 Equilateral을 출력한다.
  3. 세 각의 합이 180이 아닌 경우를 먼저 처리한다. 나머지 2개 조건이 세 각의 합이 180인 경우에 대한 것이기 때문에, 따로 조건 처리 없이 else if 처리하기 위함이다. 세 각의 합이 180이 아니면 Error를 출력한다.
  4. 두 각이 같은 경우 Isosceles를 출력한다. 세 각의 합이 180이라는 것은 else if로 자동 처리 되었다.
  5. 위의 조건들을 모두 거쳤으므로 세 각의 합이 180이고 같은 각이 없는 경우는 바로 else 처리하여 얻어낼 수 있다. Scalene을 출력한다.

 

제출 결과

728x90

댓글