문제 풀이/백준
백준 14681 C#) 사분면 고르기
alpacadabra
2022. 4. 17. 20:46
경우의 수를 나눠서 풀 수도 있지만 조금 더 흥미로운 방법이 있다.
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