[★2][백준14681번]사분면 고르기 (JAVA)
카테고리: BKJN
태그: Algorithm Java Coding Test
[★2][백준14681번]사분면 고르기 (JAVA)
14681번 문제 ☞ https://www.acmicpc.net/problem/14681
난이도 ☞ [★2]
사분면 고르기
- 문제
-
흔한 수학 문제 중 하나는 주어진 점이 어느 사분면에 속하는지 알아내는 것이다. 사분면은 아래 그림처럼 1부터 4까지 번호를 갖는다. “Quadrant n”은 “제n사분면”이라는 뜻이다.
예를 들어, 좌표가 (12, 5)인 점 A는 x좌표와 y좌표가 모두 양수이므로 제1사분면에 속한다. 점 B는 x좌표가 음수이고 y좌표가 양수이므로 제2사분면에 속한다.
점의 좌표를 입력받아 그 점이 어느 사분면에 속하는지 알아내는 프로그램을 작성하시오. 단, x좌표와 y좌표는 모두 양수나 음수라고 가정한다.2 1 3 4 - 첫 줄에는 정수 x가 주어진다. (−1000 ≤ x ≤ 1000; x ≠ 0) 다음 줄에는 정수 y가 주어진다. (−1000 ≤ y ≤ 1000; y ≠ 0)
-
점 (x, y)의 사분면 번호(1, 2, 3, 4 중 하나)를 출력한다.
예제입력 예제출력 12
51 예제입력 예제출력 9
-134
-
내가 푼 풀이
이번 문제는 제n사분면을 안다면 그것을 응용해서 풀면 쉽다고 생각하는 문제이다. 더군다나 문제를 보면 (x, y)의 값에서 0을 제외되어 따로 예외처리를 해줄 필요는 없다. 제일 쉬운 방법 두가지 Scanner와 BufferedReader방식으로 각각 작성해보려고 한다.
[ 풀이 1 ]
메모리 :
17684KB
시간 :204ms
Scanner
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int x = s.nextInt();
int y = s.nextInt();
s.close();
if (x > 0) { // x가 양수이고,
if (y > 0) { // y가 양수이면
System.out.println("1"); // 제1사분면
} else { // x가 양수이고, y가 음수이면
System.out.println("4"); // 제4사분면
}
}
else { // x가 음수이고,
if (y > 0) { // y가 양수이면
System.out.println("2"); // 제2사분면
} else { // x가 음수이고, y가 음수이면
System.out.println("3"); // 제3사분면
}
}
}
}
위의 방식처럼 할 수도 있지만, BufferedReader를 사용하여 구현을 할 수도 있으며, BufferedReader방식의 코드 구현이다. 아래의 코드를 참고하면 된다.
[ 풀이 2 ]
메모리 :
14212KB
시간 :124ms
BufferedReader
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int x = Integer.parseInt(br.readLine());
int y = Integer.parseInt(br.readLine());
if (x > 0) {
if (y > 0) {
System.out.println("1");
} else {
System.out.println("4");
}
}
else {
if (y > 0) {
System.out.println("2");
} else {
System.out.println("3");
}
}
}
}
성능면에서 BufferedReader가 양호함을 알 수 있으며, if문의 활용이 요점인 문제인 것 같다.
댓글 남기기