| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
- 노개북
- 모던자바스크립트 딥다이브
- flex box
- const
- 백준25176
- 21313 nodejs
- 11399 node.js
- 1541 node.js
- 14655 nodejs
- 1931 node.js
- 모던자바스크립트
- 2217 node.js
- 개인프로젝트
- 노마드북클럽
- 모던자바스크립트DeepDive
- 1026 node.js
- 11047 node.js
- 개발자
- 자바스크립트 일급객체
- 백준21313
- Javascript
- 자바스크립트 딥다이브
- CSS flex
- 백준1789
- 코딩
- 1789 node.js
- IT5분잡학사전
- 노마드스터디
- 백준1026
- 자바스크립트 함수
- Today
- Total
캐또's coding
14681 - 사분면 고르기 - node.js (20번째) 본문
문제
흔한 수학 문제 중 하나는 주어진 점이 어느 사분면에 속하는지 알아내는 것이다. 사분면은 아래 그림처럼 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
알고리즘 분류
입력으로 -1000 ~ 1000의 값이 들어온다. 사분면으로 생각해서 무슨 문제지? 하고 헷갈릴 필요 없이 조건을 단순화해보면 된다. 두 수가 들어오고 각각을 A, B라고 했을 때, 4가지 조건을 세우면 된다.
1. A는 양수, B도 양수 = 1
2. A는 음수, B는 양수 = 2
3. A는 음수, B도 음수 = 3
4. A는 양수, B는 음수 = 4
양수 음수는 0을 기준으로 크냐 작냐만 봐도 된다. 입력 숫자가 -1000에서 1000 사이의 정수이기 때문이다.
const input = require('fs').readFileSync(0).toString().split('\n').map(Number);
const [A, B] = input;
if (A < 0) {
console.log(B > 0 ? 2 : 3);
} else {
console.log(B > 0 ? 1 : 4);
}
코드를 간결하게 작성해보고자 했다. 우선 기존에는 A, B 두 수를 받아와야 하는 경우. 각각 const A = input[0] 이런 방식이었는데 위와 같이 const [A, B] = input;으로 두 수를 할당할 수 있음을 알게 되어 적용했다.
그리고 이유를 찾을 수는 없었지만.... 이번 문제에서는 readFileSync를 '/dev/stdin'이 아닌 0을 입력해야 적용이 되었다. 왜 그럴까...?
다음으로 조건문에서 각각의 조건을 모두 입력할 경우 최소 4줄의 코드를 작성해야 했다면, 물음표를 통해서 코드를 더욱 간결하게 작성할 수 있었다.
먼저 A에 대해서 음수인지 양수인지 판별한다.
A가 음수이고, B가 양수라면 2 그렇지 않다면 3을 출력
A가 양수이고, B가 양수라면 1 그렇지 않다면 4를 출력
물음표 함수를 통해서 위와 같은 상황에서 B > 0 ? 2 : 3 즉 B가 0보다 큰가? 맞다면 2 아니면 3을 출력하라 와 같은 방식으로 작성할 수 있다.
'기초 공부 > 백준 문제 풀이' 카테고리의 다른 글
| 2525 - 오븐 시계 - node.js (0) | 2022.08.13 |
|---|---|
| 2884 - 알람 시계 - node.js (0) | 2022.08.13 |
| 2753 - 윤년 - node.js (0) | 2022.08.13 |
| 9498 - 시험 성적 - node.js (0) | 2022.08.13 |
| 1330 - 두 수 비교하기 - node.js (0) | 2022.08.12 |