백준 14681번 - 사분면 고르기 with python
흔한 수학 문제 중 하나는 주어진 점이 어느 사분면에 속하는지 알아내는 것이다. 사분면은 아래 그림처럼 1부터 4까지 번호를 갖는다. "Quadrant n"은 "제n사분면"이라는 뜻이다.

예를 들어, 좌표가 (12,5)인 점 A는 x좌표와 y좌표가 모두 양수이므로 제1사분면에 속한다. 점 B는 x좌표가 음수이고 y좌표가 양수이므로 제2사분면에 속한다.
점의 좌표를 입력받아 그 점이 어느 사분면에 속하는지 알아내는 프로그램을 작성하시오. 단, x좌표와 y좌표는 모두 양수나 음수라고 가정한다.
입력 - 첫 줄에는 정수 x가 주어진다. (−1000 ≤ x ≤ 1000; x ≠ 0)
다음 줄에는 정수 y가 주어진다. (−1000 ≤ y ≤ 1000; y ≠ 0)
출력 - 점 (x, y)의 사분면 번호(1, 2, 3, 4 중 하나)를 출력한다.
이 문제는 다양한 방법으로 if문을 표현할 수 있다.
if와 else만 사용하는 조건문, if문과 더불어 elif문도 같이 사용하는 조건문, ... 등 다양한 방법이 있다.
나는 이중에서 전자의 방식을 사용하였다.
if문과 elif문을 같이 사용하게 되면 코드가 더 복잡해보이고, 가독성이 좋지 않다고 느꼈기 때문이다.
if와 else 문만 사용하려면 if문을 총 두 번 사용해 주어야 한다.
그렇기 때문에 하나의 if문안에 다른 if문이 들어가 조건을 중첩시켜주도록 해보겠다.
첫 번째 if문에서는 x의 조건을 다뤄줄 것이고, 두 번째 if문에서는 y의 조건을 다뤄볼 것이다.
기본적인 틀을 표현해보자면,
ⅰ) x > 0 일 때 -> ① y > 0 이라면 1을 출력 (+,+)
-> ② y < 0 이라면 4를 출력 (+,-)
ⅱ) x < 0 일 때 -> ① y > 0 이라면 2를 출력 (-,+)
-> ② y < 0 이라면 3을 출력 (-,-)
라고 볼 수 있겠다.
i)인 경우(x > 0)를 큰 if문으로, 그리고 이 if문 안에 작은 if문을 작성한다.
작은 if문은 큰 if문이 참일 때 실행가능한 수식이다.
그러므로 작은 if문이 만족한다는 것은, 큰 if문도 만족하고 작은 if문도 만족한다는 것이다.
i)-①인 경우(y > 0)를 작은 if문으로 처리를 해주고, i)-②인 경우(y < 0)를 else 문으로 처리를 해준다.
ⅱ)인 경우(x < 0)를 else문으로 처리해준다. 그리고 이 else문 안에 작은 if문을 작성한다.
ⅱ)-①인 경우(y > 0)를 작은 if문으로 처리를 해주고, ⅱ)-②인 경우(y < 0)를 else 문으로 처리를 해준다.
설명이 조금 난잡해지는 것 같으니 바로 코드로 설명하겠다.

빨간 색 부분은 x > 0 인 조건문이 참일 때 실행된다.
그러므로 빨간색 부분 속 if y > 0 인 부분이 의미하는 것은 x > 0이고 y > 0 일 때 실행이 되는 것이다.
파란 색 부분은 x > 0 인 조건문이 거짓일 때, 즉, x < 0 일 때 실행되는 코드이다.
그럼 이제 문제를 풀어보자.
먼저 첫 줄에 정수 x가, 다음 줄에 정수 y가 주어진다고 했으므로
x = int(input())
y = int(input())
로 받아주고, if문을 작성한다.
if x > 0:
if y > 0:
print(1)
else:
print(4)
else:
if y > 0:
print(2)
else:
print(3)
문제에 있는 예제를 출력해보면

x와 y가 둘 다 양수이므로 제 1사분면이다. 상황에 맞게 1이 잘 출력되는 것을 볼 수 있다.
<코드>
x = int(input())
y = int(input())
if x > 0:
if y > 0:
print(1)
else:
print(4)
else:
if y > 0:
print(2)
else:
print(3)
'우당탕탕 파이썬 with 하루하나 알고리즘' 카테고리의 다른 글
백준 2525 파이썬 - if문을 활용해 일정 시간이 지난 시각 확인하기 (0) | 2022.03.17 |
---|---|
백준 2884 파이썬 - if문을 사용해 45분 앞서는 시간 확인하기 (0) | 2022.03.16 |
백준 2753 파이썬 - if 문에 and, or 연산자 사용하기 (0) | 2022.03.14 |
백준 9498 파이썬 - 시험 점수에 해당하는 등급 출력하기 (0) | 2022.03.13 |
백준 1330 파이썬 - if문을 통해 두 수 비교하기 (0) | 2022.03.12 |