알고리즘/백준

[BOJ] 백준 9610 사분면 - Java

송파도령 2023. 6. 30. 21:43

난이도

브론즈3

문제

출처

https://www.acmicpc.net/problem/9610

 

9610번: 사분면

2차원 좌표 상의 여러 점의 좌표 (x,y)가 주어졌을 때, 각 사분면과 축에 점이 몇 개 있는지 구하는 프로그램을 작성하시오.

www.acmicpc.net

지문

2차원 좌표 상의 여러 점의 좌표 (x,y)가 주어졌을 때, 각 사분면과 축에 점이 몇 개 있는지 구하는 프로그램을 작성하시오.

입력

첫째 줄에 점의 개수 n (1 ≤ n ≤ 1000)이 주어진다. 다음 n개 줄에는 점의 좌표 (xi, yi)가 주어진다. (-106 ≤ xi, yi ≤ 106)

출력

각 사분면과 축에 점이 몇 개 있는지를 예제 출력과 같은 형식으로 출력한다.

풀이

내가 생각하는 핵심

  1. Map을 활용하여 해당 사분면이 나오면 Value를 증가시킨다.
  2. if문을 활용하여 사분면을 판단한다.

코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
import java.util.StringTokenizer;

public class Main {
    static Map<String, Integer> ans = new HashMap<>();
    public static void main(String[] args) throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        StringTokenizer st;
        int T = Integer.parseInt(bf.readLine());
        ans.put("Q1", 0);
        ans.put("Q2", 0);
        ans.put("Q3", 0);
        ans.put("Q4", 0);
        ans.put("AXIS", 0);
        for(int tc = 0; tc < T; tc++){
            st = new StringTokenizer(bf.readLine(), " ");
            int x = Integer.parseInt(st.nextToken());
            int y = Integer.parseInt(st.nextToken());
            if(x == 0 || y == 0){
                ans.put("AXIS", ans.get("AXIS")+1);
            }else if(x < 0 && y < 0){
                ans.put("Q3", ans.get("Q3")+1);
            }else if(x < 0 && y > 0){
                ans.put("Q2", ans.get("Q2")+1);
            }else if(x > 0 && y < 0){
                ans.put("Q4", ans.get("Q4")+1);
            }else if(x > 0 && y > 0){
                ans.put("Q1", ans.get("Q1")+1);
            }
        }
        sb.append("Q1: ").append(ans.get("Q1")).append("\n")
                .append("Q2: ").append(ans.get("Q2")).append("\n")
                .append("Q3: ").append(ans.get("Q3")).append("\n")
                .append("Q4: ").append(ans.get("Q4")).append("\n")
                .append("AXIS: ").append(ans.get("AXIS"));
        System.out.println(sb);
    }
}

회고

지금 보면 굳이 Map을 안쓰고 변수를 5가지로 지정해서 풀어도 충분했을 것 같다. (코드는 좀 더러워 지겠지만)