본문 바로가기

PS/BOJ

[C++] BOJ (백준) 4153 : 직각삼각형

문제

4153번: 직각삼각형 (acmicpc.net)

 

4153번: 직각삼각형

입력은 여러개의 테스트케이스로 주어지며 마지막줄에는 0 0 0이 입력된다. 각 테스트케이스는 모두 30,000보다 작은 양의 정수로 주어지며, 각 입력은 변의 길이를 의미한다.

www.acmicpc.net

코드
#include <iostream>
#include <array>
#include <algorithm>

using namespace std;

array<int, 3> arr;

bool isRightTriangle() {
  for (int &i: arr) {
    cin >> i;
    if (i == 0) return false;
  }
  sort(arr.begin(), arr.end());
  auto [a, b, c] = arr;
  cout << ((a * a + b * b == c * c) ? "right" : "wrong") << '\n';
  return true;
}

int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);

  while (isRightTriangle());
  return 0;
}

 

설명

0을 입력받을 때까지 세 정수를 입력받은 후 정렬하여 직각삼각형인지 판별한다.
'auto [ 변수 ] = (배열, 어레이, 벡터, 페어, 튜플, 구조체 등)' 식의 문법(Structured binding declaration)은 C++17부터 가능하다.