[C#] 백준 7510번 고급 수학

2024. 4. 4. 12:36·Language/C#
반응형

[ 문제 ]

준규는 집을 짓고 있다. 준규는 모든 벽 모양을 직각 삼각형으로 만들려고 한다. 적절히 나무를 잘라 삼각형을 만들었지만, 준규는 각도를 측정할 수 있는 도구를 가지고 있지 않다. 어쩔 수 없이 줄자를 이용해 삼각형 세 변의 길이를 측정한 다음, 직각 삼각형인지 아닌지를 알아보려고 한다.

삼각형 세 변의 길이가 주어졌을 때, 직각 삼각형인지 아닌지를 구하는 프로그램을 작성하시오.

 

[ 코드 ]

1. 내 코드

StreamReader sr = new StreamReader(Console.OpenStandardInput());
StreamWriter sw = new StreamWriter(Console.OpenStandardOutput());

int n = int.Parse(sr.ReadLine());

for (int i = 1; i <= n; i++)
{
    int[] s = sr.ReadLine().Split().Select(int.Parse).ToArray();
    int num1 = s[0] * s[0];
    int num2 = s[1] * s[1];
    int num3 = s[2] * s[2];

    int c = Math.Max(num1, Math.Max(num2, num3));
    int ab = num1 + num2 + num3 - c;

    if(ab == c)
    {
        sw.WriteLine($"Scenario #{i}:\nyes\n");
    }
    else sw.WriteLine($"Scenario #{i}:\nno\n");
}

sw.Flush();
sw.Close();
sr.Close();

 

2. 다른 사람 코드

using System;
using System.Text;

namespace no7510try1
{
    internal class Program
    {
        static int GetSquare(int a) => a * a;

        static void Main(string[] args)
        {
            StringBuilder result = new StringBuilder();
            int count = int.Parse(Console.ReadLine());

            for (int i = 1; i <= count; ++i)
            {
                string[] nums = Console.ReadLine().Split(' ');
                int a = int.Parse(nums[0]);
                int b = int.Parse(nums[1]);
                int c = int.Parse(nums[2]);

                result.Append($"Scenario #{i}:\n");
                result.Append((2 * GetSquare(Math.Max(Math.Max(a, b), c)) == (GetSquare(a) + GetSquare(b) + GetSquare(c))) ? "yes\n" : "no\n");
                if (i < count) result.Append('\n');
            }

            Console.Write(result);
        }
    }
}

 

[ 추가 ]

 

내가 푼 문제는 피타고라스가 아래와 같은 공식

여기서 c는 빗변

 

다른 사람 코드는 내 코드처럼 전체값에서 c를 빼지않고 비교값에 c의 제곱을 더해준다.

c제곱의 값이 두개이기때문에 2*c제곱으로 해주면 같은 값이 나온다.

굳이 Max값인 c을 찾고 총합에서 Max값을 빼주지않더라도 값을 구할 수 있다.

 

[ 실행화면 ]

case: 1

 

 

 

 

 


문제링크: https://www.acmicpc.net/problem/7510

 

7510번: 고급 수학

각 테스트 케이스마다 "Scenario #i:"를 출력한다. i는 테스트 케이스 번호이며, 1부터 시작한다. 그 다음 줄에는 입력으로 주어진 삼각형이 직각 삼각형인 경우에는 "yes", 아닌 경우에는 "no"를 출력

www.acmicpc.net

 

최근에는 계속 피타고라스 정리 쓰는 문제만 많이 푸나 싶은데...... 기하학 태그를 올리고싶어서 기하학만 푸니깐요잉...

반응형
저작자표시 비영리 변경금지 (새창열림)

'Language > C#' 카테고리의 다른 글

[C#] 백준 22938번 백발백준하는 명사수  (0) 2024.04.05
[C#] 백준 14264번 정육각형과 삼각형  (0) 2024.04.04
[C#] 백준 3034번 앵그리 창영  (0) 2024.04.03
[C#] 백준 3053번 택시 기하학(비유클리드 기하학)  (0) 2024.04.03
[C#] 백준 10569번 다면체 (오일러의 다면체 정리)  (0) 2024.04.03
'Language/C#' 카테고리의 다른 글
  • [C#] 백준 22938번 백발백준하는 명사수
  • [C#] 백준 14264번 정육각형과 삼각형
  • [C#] 백준 3034번 앵그리 창영
  • [C#] 백준 3053번 택시 기하학(비유클리드 기하학)
석영
석영
관심 분야는 AR, VR, 게임이고 유니티 공부 중 입니다. (정보처리기사,컴퓨터그래픽스운용기능사 취득)
유석영의 개발공부관심 분야는 AR, VR, 게임이고 유니티 공부 중 입니다. (정보처리기사,컴퓨터그래픽스운용기능사 취득)
반응형
석영
유석영의 개발공부
석영
전체
오늘
어제
  • 분류 전체보기
    • Unity
      • Project
      • Tip
      • Assets
    • Record
      • TIL
      • Game
    • Language
      • C#
      • Node.js
      • HTML, JS
    • Study
      • Linear Algebra

인기 글

최근 글

hELLO· Designed By정상우.v4.5.2
석영
[C#] 백준 7510번 고급 수학

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.