14681번: 사분면 고르기
점 (x, y)의 사분면 번호(1, 2, 3, 4 중 하나)를 출력한다.
www.acmicpc.net
먼저, 정수를 입력받아 변수 x에 저장한다.
또 정수를 입력받아 변수 y에 저장한다.
이제, 변수 x와 y에 점(x, y)의 x좌표와 y좌표가 저장되어 있다.
좌표가 어느 사분면에 속하는지는 x좌표와 y좌표를 기준으로 판단한다.
사분면 판단 조건
- 제1사분면 : x좌표, y좌표가 모두 양수인 경우
- 제2사분면 : x좌표가 음수이고, y좌표가 양수인 경우
- 제3사분면 : x좌표와 y좌표가 모두 음수인 경우
- 제4사분면 : x좌표가 양수이고, y좌료가 음수인 경우
위의 사분면 판단 조건에 따라 조건문을 사용해서 1, 2, 3, 4를 출력한다.
#include <stdio.h>
int main(void) {
int x, y; // 1. x좌표와 y좌표를 저장할 변수 2개 선언
scanf("%d", &x); // 2-1. x좌표(정수)를 입력받아 변수 x에 저장
scanf("%d", &y); // 2-2. y좌표(정수)를 입력받아 변수 y에 저장
if (x > 0 && y > 0) { // 3-1. x좌표와 y좌표가 모두 양수인 경우
printf("1"); // 3-1. 1 출력
}
else if ((x < 0) && (y > 0)) { // 3-2. x좌표가 음수이고, y좌표가 양수인 경우
printf("2"); // 3-2. 2 출력
}
else if ((x < 0) && (y < 0)) { // 3-3. x좌표와 y좌표가 모두 음수인 경우
printf("3"); // 3-3. 3 출력
}
else if ((x > 0) && (y < 0)) { // 3-4. x좌표가 양수이고, y좌료가 음수인 경우
printf("4"); // 3-4. 4 출력
}
return 0;
}
문제에서 ,−1000 ≤ x ≤ 1000 이고 ,x ≠ 0
, −1000 ≤ y ≤ 1000 이고, y ≠ 0
이라고 제시되어 있다.
x 또는 y가 0인 경우가 배제 되므로,
x가 양수거나 음수거나, y가 양수거나 음수거나 해서
총 2 × 2 = 4 가지의 경우의 수가 나온다.
다라서 마지막 조건문 else if ((x > 0) && (y < 0))
는 else
로 적어도 된다.
위에서 1사분면인 경우, 2사분면인 경우, 3사분면인 경우 총 3가지 경우를 다 따져 보았기 때문이다.
#include <stdio.h>
int main(void) {
int x, y; // 1. x좌표와 y좌표를 저장할 변수 2개 선언
scanf("%d", &x); // 2-1. x좌표(정수)를 입력받아 변수 x에 저장
scanf("%d", &y); // 2-2. y좌표(정수)를 입력받아 변수 y에 저장
if (x > 0 && y > 0) { // 3-1. x좌표와 y좌표가 모두 양수인 경우
printf("1"); // 3-1. 1 출력
}
else if ((x < 0) && (y > 0)) { // 3-2. x좌표가 음수이고, y좌표가 양수인 경우
printf("2"); // 3-2. 2 출력
}
else if ((x < 0) && (y < 0)) { // 3-3. x좌표와 y좌표가 모두 음수인 경우
printf("3"); // 3-3. 3 출력
}
else { // 3-4. x좌표가 양수이고, y좌료가 음수인 경우
printf("4"); // 3-4. 4 출력
}
return 0;
}
조건문을 이중으로 작성해도 된다.
x좌표(또는 y좌표)가 양수일때와 음수일 때로 나눈 후,
y좌표(또는 x좌표)에 따라 사분면이 나뉜다.
x좌표가 양수이면 y좌표에 따라 제1사분면과 제4사분면으로 나뉜다.
- x좌표가 양수일 때, y좌표가 양수이면 제1사분면
- x좌표가 양수일 때, y좌표가 음수이면 제4사분면
x좌표가 음수이면 y좌표에 따라 제2사분면과 제3사분면으로 나뉜다.
- x좌표가 음수일 때, y좌표가 양수이면 제2사분면
- x좌표가 음수일 때, y좌표가 음수이면 제3사분면
#include <stdio.h>
int main(void) {
int x, y; // 1. x좌표와 y좌표를 저장할 변수 2개 선언
scanf("%d", &x); // 2-1. x좌표(정수)를 입력받아 변수 x에 저장
scanf("%d", &y); // 2-2. y좌표(정수)를 입력받아 변수 y에 저장
if (x > 0) { // x좌표가 양수일 때
if (y > 0) { // y좌표가 양수이면
printf("1"); // 1 출력
}
else if (y < 0) { // y좌표가 음수이면
printf("4"); // 4 출력
}
}
else if (x < 0) { // x좌표가 음수일 때
if (y > 0) { // y좌표가 양수이면
printf("2"); // 2 출력
}
else if (y < 0) { // y좌표가 음수이면
printf("3"); // 3 출력
}
}
return 0;
}
y좌표를 기준으로도 나눌 수 있다.
y좌표가 양수이면 x좌표에 따라 제1사분면과 제2사분면으로 나뉜다.
- y좌표가 양수일 때, x좌표가 양수이면 제1사분면
- y좌표가 양수일 때, x좌표가 음수이면 제2사분면
y좌표가 음수이면 x좌표에 따라 제3사분면과 제4사분면으로 나뉜다.
- y좌표가 음수일 때, x좌표가 양수이면 제4사분면
- y좌표가 음수일 때, x좌표가 음수이면 제3사분면
#include <stdio.h>
int main(void) {
int x, y; // 1. x좌표와 y좌표를 저장할 변수 2개 선언
scanf("%d", &x); // 2-1. x좌표(정수)를 입력받아 변수 x에 저장
scanf("%d", &y); // 2-2. y좌표(정수)를 입력받아 변수 y에 저장
if (y > 0) { // y좌표가 양수일 때
if (x > 0) { // x좌표가 양수이면
printf("1"); // 1 출력
}
else if (x < 0) { // x좌표가 음수이면
printf("2"); // 2 출력
}
}
else if (y < 0) { // y좌표가 음수일 때
if (x > 0) { // x좌표가 양수이면
printf("4"); // 4 출력
}
else if (x < 0) { // x좌표가 음수이면
printf("3"); // 3 출력
}
}
return 0;
}
'PS > 백준' 카테고리의 다른 글
[백준] 2884번: 알람 시계 [C] (1) | 2023.01.03 |
---|---|
[백준] 2753번: 윤년 [C] (0) | 2023.01.03 |
[백준] 9498번: 시험 성적 [C] (0) | 2023.01.03 |
[백준] 1330번: 두 수 비교하기 [C] (0) | 2023.01.03 |
[백준 > 단계별로 풀어보기] 1단계 입출력과 사칙연산 (답) [C / C++] (0) | 2023.01.03 |