C/BaekJoon

[C] 백준 9610 - 사분면 | BaekJoon

sngsp 2023. 8. 2. 17:38

문제

2차원 좌표 상의 여러 점의 좌표 (x,y)가 주어졌을 때, 각 사분면과 축에 점이 몇 개 있는지 구하는 프로그램을 작성하시오.

입력

첫째 줄에 점의 개수 n (1 ≤ n ≤ 1000)이 주어진다. 다음 n개 줄에는 점의 좌표 (xi, yi)가 주어진다. (-106 ≤ xi, yi ≤ 106)

출력

각 사분면과 축에 점이 몇 개 있는지를 예제 출력과 같은 형식으로 출력한다.

예제 입력 1

5
0 0
0 1
1 1
3 -3
2 2

예제 출력 1

Q1: 2
Q2: 0
Q3: 0
Q4: 1
AXIS: 2

예상 풀이 방법

n을 입력받아 0부터 0 미만까지의 for문을 돌린다.
거기서 n번만큼 scanf로 x, y값을 받고
if문을 여러번 써서 걸러준다.
가장 먼저 x나 y가 0일 경우 AXIS의 갯수를 세어주도록 하고
x가 양수일 때 2가지
x가 음수일 때 2가지를 각각 나눈다.

그리고 맨 아래에 scanf로 출력

1차 코드

#include <stdio.h>

int main() {
    int AXIS = 0;
    int Q1 = 0;
    int Q2 = 0;
    int Q3 = 0;
    int Q4 = 0;
    int n;
    scanf("%d", &n);

    for (int i = 0; i < n; i++) {
        int x, y;
        scanf("%d %d", &x, &y);

        if (x == 0 || y == 0) {
            AXIS++;
        }
        if (x > 0) {
            if (y > 0) {
                Q1++;
            }
            if (y < 0) {
                Q4++;
            }
        }
        if (x < 0) {
            if (y > 0) {
                Q2++;
            }
            if (y < 0) {
                Q3++;
            }
        }
    }

    printf("Q1: %d\n", Q1);
    printf("Q2: %d\n", Q2);
    printf("Q3: %d\n", Q3);
    printf("Q4: %d\n", Q4);
    printf("AXIS: %d\n", AXIS);
}

1차 실행 결과

5
0 0
0 1
1 1
3 -3
2 2
Q1: 2
Q2: 0
Q3: 0
Q4: 1
AXIS: 2

백준 채점 결과

미흡했던 점

return 0; 안들어가있는데 이거 습관화가 안되어있다.

개선 방안

코드를 더 줄이는 방법으로 할 수 있을 것 같다.

최종 코드

#include <stdio.h>

int main() {
    int AXIS = 0;
    int Q1 = 0;
    int Q2 = 0;
    int Q3 = 0;
    int Q4 = 0;
    int n;
    scanf("%d", &n);

    for (int i = 0; i < n; i++) {
        int x, y;
        scanf("%d %d", &x, &y);

        if (x == 0 || y == 0) {
            AXIS++;
        }
        if (x > 0) {
            if (y > 0) {
                Q1++;
            }
            if (y < 0) {
                Q4++;
            }
        }
        if (x < 0) {
            if (y > 0) {
                Q2++;
            }
            if (y < 0) {
                Q3++;
            }
        }
    }

    printf("Q1: %d\nQ2: %d\nQ3: %d\nQ4: %d\nAXIS: %d\n", Q1, Q2, Q3, Q4, AXIS);

    return 0;
}