본문 바로가기

Algorithm/Math

(C++) - 백준(BOJ) 8723번 : Patyki

반응형

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

 

8723번: Patyki

Pierwszy wiersz wejścia zawiera trzy liczby całkowite a, b, c (1 ≤ a, b, c ≤ 1000), oznaczające odpowiednio długości pierwszego, drugiego i trzeciego patyka.

www.acmicpc.net

수식을 세우고 분기문을 사용해보는 문제였습니다.

📕 풀이방법

📔 입력 및 초기화

방 3개인 일차원 배열 a, 정삼각형인지 직각삼각형인지 판별하는 bool 변수 f1, f2 를 선언합니다. 그 후 세 수를 입력받습니다. 그 세 수를 오름차순으로 정렬합니다.

 

📔 풀이과정

 1. 세 수가 모두 같으면 정삼각형이므로 f1을 true로 저장합니다. 2. 가장 긴 빗변(a[2])^2 = a[0]^2 + a[1]^2라면 직각삼각형이므로 f2를 true로 저장합니다.

 

📔 정답출력

조건에 맞게 출력합니다.

 1. !f1 && !f2면 0

 2. !f1 && f2면 1

 3. f1 && !f2면 2를 출력합니다.


📕 Code

#include <bits/stdc++.h>
using namespace std;
int a[3];
bool f1, f2; //정삼각형이면 f1 = true, 직각삼각형이면 f2 = true
int main(){
    cin >> a[0] >> a[1] >> a[2];
    sort(a, a + 3);
    if(a[0] == a[1] && a[1] == a[2]) f1 = true;
    if(a[2] * a[2] == a[0] * a[0] + a[1] * a[1]) f2 = true;
    if(!f1 && !f2) cout << 0;
    if(!f1 && f2) cout << 1;
    if(f1 && !f2) cout << 2;
}