반응형
https://www.acmicpc.net/problem/14681
14681번: 사분면 고르기
점 (x, y)의 사분면 번호(1, 2, 3, 4 중 하나)를 출력한다.
www.acmicpc.net
알고리즘 매일 하나씩이라도 공부하기 2일차이다.
이번에는 점의 좌표를 입력받아 사분면을 출력하는 문제였다.
정답은 맞았지만 더 좋은 방법들을 찾았기에 하나씩 작성해보려고 한다.
우선 문제를 보고 가장 먼저 떠오른 생각은 "x,y 값을 한줄씩 받아도되는것인가?" 였다.
하지만 x값, y값을 한줄씩 받고 조건문으로 사분면을 고르면 판단이 섰다.
조건을 분석해보면 (+,+) / (-,+) / (-,-) / (+,-) 로 생각해 볼 수 있다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int x = scan.nextInt();
int y = scan.nextInt();
if(x>0 && y>0){
System.out.println(1);
} else if (x<0 && y>0) {
System.out.println(2);
} else if (x<0 && y<0) {
System.out.println(3);
} else {
System.out.println(4);
}
}
}
그렇기에 나는 단순히 x값과 y값을 동시에 비교해서 사분면을 출력시켜줘야 한다고 생각하여 조건문을 저렇게 작성하였다.
하지만 조금 더 깊게 생각해보면 다른 방법으로 해결해볼 필요가 있는 것 같다.
메모리나 시간측면에서 너무 오래걸리는 것 같기 때문이다.
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int x = scan.nextInt();
int y = scan.nextInt();
if(x > 0) {
if(y > 0) {
System.out.print(1);
}else {
System.out.print(4);
}
}else {
if(y > 0) {
System.out.print(2);
}else {
System.out.print(3);
}
}
}
}
이렇게 먼저 x값을 가지고 양수인지 음수인지를 먼저 판단을 해준 후 , y값을 조건문에 대입시켜 사분면을 출력하면 훨씬 효율적이다.
그외에도 BufferedReader를 이용한 방법도 있겠지만 오늘은 여기까지 하고 다음에는 꼭 BufferedReader를 이용하여 알고리즘을 해결해 보고 싶다.
반응형
'알고리즘 > 알고리즘:백준' 카테고리의 다른 글
[ 알고리즘 : 백준 ] 2562번 : 최댓값 (0) | 2022.12.28 |
---|---|
[ 알고리즘 : 백준 ] 18018 : 최소, 최대 (0) | 2022.12.28 |
[ 알고리즘 : 백준 ] 10871번 X보다 작은 수 (0) | 2022.12.26 |
[ 알고리즘 : 백준 ] 10807번 개수 세기 (0) | 2022.12.26 |
[ 알고리즘:백준 ] 2753:윤년 (0) | 2022.08.21 |