728x90
728x90
문제

흔한 수학 문제 중 하나는 주어진 점이 어느 사분면에 속하는지 알아내는 것이다. 사분면은 아래 그림처럼 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 중 하나)를 출력한다.

 

예제 입력 1 

12
5

 

예제 출력 1

1

 

예제 입력 2 

9
-13

 

예제 출력 2 

4

 

출처

Olympiad > Canadian Computing Competition & Olympiad > 2017 > CCC 2017 Junior Division 1번

  • 문제를 번역한 사람: jh05013

 

알고리즘 분류

  • 구현
  • 기하학

 

문제 출처

https://www.acmicpc.net/problem/14681

 

14681번: 사분면 고르기

점 (x, y)의 사분면 번호(1, 2, 3, 4 중 하나)를 출력한다.

www.acmicpc.net

 


 

문제 해결 방법

  • 사분면의 정의에 대해 잘 파악하고 있다면 쉽게 풀 수 있는 문제였다.
  • x축과 y축의 좌표의 수를 각각 입력 받은 후, 각각의 부호의 조건에 맞게 몇 사분면인지 출력하도록 하여 문제를 해결하였다. 

 

코드

#include <iostream>
using namespace std;

int main() {
    cin.tie(NULL);
    cout.tie(NULL);
    ios_base::sync_with_stdio(false);

    int x, y;

    cin >> x >> y;

    // Quadrant n : 제 n사분면
    // x > 0, y > 0 : Q1
    // x < 0, y > 0 : Q2
    // x < 0, y < 0 : Q3
    // x > 0, y < 0 : Q4

    if ((x > 0) && (y > 0)) {
        cout << "1" << endl;
    }
    else if ((x < 0) && (y > 0)) {
        cout << "2" << endl;
    }
    else if ((x < 0) && (y < 0)) {
        cout << "3" << endl;
    }
    else {
        cout << "4" << endl;
    }

    return 0;
}

 

채점 결과

 

참고

  • [단계별로 풀어보기] > [조건문]

 

Quadrant (사분면)

(x, y)
2 (-, +) 1 (+, +)
3 (-, -) 4 (+, -)

 

728x90
728x90

'Problem Solving > BOJ' 카테고리의 다른 글

[BOJ-2739][C++] 구구단  (0) 2022.07.09
[BOJ-2480][C++] 주사위 세개  (0) 2022.07.08
[BOJ-2525][C++] 오븐 시계  (0) 2022.07.08
[BOJ-2884][C++] 알람 시계  (0) 2022.07.08
[BOJ-2753][C++] 윤년  (0) 2022.07.08
[BOJ-9498][C++] 시험 성적  (0) 2022.07.08
[BOJ-1330][C++] 두 수 비교하기  (0) 2022.07.08
[BOJ-25083][C++] 새싹  (0) 2022.07.07