우당탕탕 파이썬 with 하루하나 알고리즘

백준 14681 파이썬 - if문을 활용하여 사분면 번호 출력하기

hyxndy 2022. 3. 15. 12:02

백준 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)