Algorithm/C

[백준] 9610번 : 사분면 C/C++ 문제풀이 솔루션

Printemp 2021. 11. 23.

문제

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

입력

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

출력

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

 

 

 

 

 

 

 

 

 

 

 좌표의 사분면을 찾는 문제이다. 이 풀이에서는 포인터를 사용하였다. 사분면의 좌표 개수를 변수로 두고, 변수의 주소를 coordinate 함수에 보내 포인터로 받았다. 함수에서 사분면을 찾은 후 변수의 개수를 포인터로 증가시켰다.  

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

void coordinate(int x, int y, int* p, int* q, int* t, int* r, int* u);

int main()
{
	int n, i, x, y;
	int Q1 = 0, Q2 = 0, Q3 = 0, Q4 = 0, AXIS = 0;
	scanf("%d", &n);
	for (i = 0; i < n; i++)
	{
		scanf("%d %d", &x, &y);
		coordinate(x, y, &Q1, &Q2, &Q3, &Q4, &AXIS);
	}
	
	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);

	return 0;
}
void coordinate(int x, int y, int* p, int* q, int* t, int* r, int* u)
{
	if (x == 0 || y == 0)
		(*u)++;
	else if (x > 0)
	{
		if (y > 0)
			(*p)++;
		else
			(*r)++;
	}
	else if (x < 0)
	{
		if (y > 0)
			(*q)++;
		else
			(*t)++;
	}
}

 

댓글

💲 추천 글