[백준 | Javascript] 14681

박기영·2022년 5월 16일
0

백준

목록 보기
17/127

조건문 4단계
14681번. 사분면 고르기

문제

흔한 수학 문제 중 하나는 주어진 점이 어느 사분면에 속하는지 알아내는 것이다. 사분면은 아래 그림처럼 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

solution (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) : console.log(4)
    } else if(x < 0){
    	y > 0 ? console.log(2)  : console.log(3)
    }
  
  process.exit();
});

solution (fs 모듈)

const fs = require('fs');

// 이 문제에서는 fs 모듈을 사용한다면
// 경로를 아래와 같이 0만 입력하면 된다.
const inputData = fs.readFileSync(0).toString().split('\n');

const x = Number(inputData[0]);
const y = Number(inputData[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 {
 console.log(4); 
}

해설

이번 문제는 fs 모듈을 사용하는 방법이 원래 하던 방법과 경로가 조금 달라서 한참을 고민했다.
결국 구글링 해본 결과, readline 모듈을 사용하는 방법이 더 보편적이라는 것을 알게되었다.(다양한 사이트에서 사용 가능하다.)
그 이유는, fs 모듈은 사용시 경로를 입력하는데, 이게 사이트마다 다르기 때문인 것으로 판단된다.
실제 런타임도 readline이 fs보다 조금 더 빨랐다.
두 방법 모두 알아두는게 나을 것 같다!
해답은 이전 문제와 비슷하게 수학적 지식만 있으면 간단하게 작성할 수 있었다.
x가 양수일 경우 y의 부호에 따라 1,4 사분면.
x가 음수일 경우 y의 부호에 따라 2,3 사분면.
readline 모듈 사용법 참고 사이트

profile
나를 믿는 사람들을, 실망시키지 않도록

0개의 댓글

관련 채용 정보