# [Algorithm/JS] 백준 14681번 사분면 고르기

🔗 문제 바로가기 (opens new window)

# Question

연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오.

윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다.

예를 들어, 2012년은 4의 배수이면서 100의 배수가 아니라서 윤년이다. 1900년은 100의 배수이고 400의 배수는 아니기 때문에 윤년이 아니다. 하지만, 2000년은 400의 배수이기 때문에 윤년이다.

흔한 수학 문제 중 하나는 주어진 점이 어느 사분면에 속하는지 알아내는 것이다. 사분면은 아래 그림처럼 1부터 4까지 번호를 갖는다. "Quadrant n"은 "제n사분면"이라는 뜻이다.

예를 들어, 좌표가 (12, 5)인 점 A는 x좌표와 y좌표가 모두 양수이므로 제1사분면에 속한다. 점 B는 x좌표가 음수이고 y좌표가 양수이므로 제2사분면에 속한다.

점의 좌표를 입력받아 그 점이 어느 사분면에 속하는지 알아내는 프로그램을 작성하시오. 단, x좌표와 y좌표는 모두 양수나 음수라고 가정한다.

# Input

첫 줄에는 정수 x가 주어진다. (−1000 ≤ x ≤ 1000; x ≠ 0) 다음 줄에는 정수 y가 주어진다. (−1000 ≤ y ≤ 1000; y ≠ 0)

# Output

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

# Example

# Input 1

12
5
1
2

# Output 1

1
1

# Input 2

9
-13
1
2

# Output 2

4
1

# Solution

const [x, y] = require('fs').readFileSync('dev/stdin').toString().split('\n');
if (x > 0) {
  y < 0 ? console.log(1) : console.log(4);
}
if (x < 0) {
  y > 0 ? console.log(2) : console.log(3);
}
1
2
3
4
5
6
7

아무리 봐도 잘못된 부분이 없는데 런타임 에러가 발생했다. 서치해본 결과 fs 모듈을 사용한 사람들이 모두 런타임 에러가 발생 했다. 그들은 모두 readline 모듈로 대체하여 작성하니 에러 없이 통과 되었다고한다. (다들 이유는 모른다고 한다..)

# 문제 해결

서치결과대로 readline 모듈을 사용하니 성공적으로 통과되었다.

const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let input = [];
rl.on('line', function (line) {
  input.push(parseInt(line));
}).on('close', function () {
  const x = input[0];
  const y = input[1];
  if (x > 0 && y > 0) {
    console.log(1);
  } else if (x < 0 && y > 0) {
    console.log(2);
  } else if (x < 0 && y < 0) {
    console.log(3);
  } else if (x > 0 && y < 0) {
    console.log(4);
  }
  process.exit();
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Last Updated: 2022. 6. 5. 오후 3:42:39