본문 바로가기
백준/단계별

백준 14681 C#) 사분면 고르기

by alpacadabra 2022. 4. 17.

경우의 수를 나눠서 풀 수도 있지만 조금 더 흥미로운 방법이 있다.

 

int x = int.Parse(Console.ReadLine());
int y = int.Parse(Console.ReadLine());


//1
if      (x > 0 && y > 0)
    Console.Write('1');
else if (x < 0 && y > 0)
    Console.Write('2');
else if (x < 0 && y < 0)
    Console.Write('3');
else if (x > 0 && y < 0)
    Console.Write('4');
    
    
//2
switch (Math.Atan2(y, x))
{
    case < -Math.PI / 2: Console.Write('3'); break;
    case <            0: Console.Write('4'); break;
    case <  Math.PI / 2: Console.Write('1'); break;
    case <      Math.PI: Console.Write('2'); break;
    default: break;
}

 

1번은 x, y가 가질 수 있는 모든 경우의 수를 다룬 정석적인 풀이 방법이고

2번은 탄젠트의 역함수인 아크탄젠트를 이용하여 점 (x, y)와 원점과의 라디안을 계산한 것이다.

 

 

위는 Atan2 메소드에 대한 설명이다.

 

 

Math.Atan2(Double, Double) 메서드 (System)

탄젠트를 적용했을 때 지정된 두 숫자의 몫이 나오는 각도를 반환합니다.

docs.microsoft.com

 

'백준 > 단계별' 카테고리의 다른 글

백준 2739 C#) 구구단  (0) 2022.04.17
백준 2884 C#) 알람 시계  (0) 2022.04.17
백준 9498 C#) 시험 성적  (0) 2022.04.17
백준 2753 C#) 윤년  (0) 2022.04.17
백준 1330 C#) 두 수 비교하기  (0) 2022.04.17

댓글