난이도
브론즈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)
출력
각 사분면과 축에 점이 몇 개 있는지를 예제 출력과 같은 형식으로 출력한다.
풀이
내가 생각하는 핵심
- Map을 활용하여 해당 사분면이 나오면 Value를 증가시킨다.
- 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가지로 지정해서 풀어도 충분했을 것 같다. (코드는 좀 더러워 지겠지만)
'알고리즘 > 백준' 카테고리의 다른 글
[BOJ] 백준 19941 햄버거 분배 - Java (0) | 2023.09.23 |
---|---|
[BOJ] 백준 5557 1학년 - Java (0) | 2023.09.06 |
[BOJ] 백준 12851 숨바꼭질 2 - Java (1) | 2023.09.06 |
[BOJ] 백준 9935 문자열 폭발 - Java (0) | 2023.07.03 |
[BOJ] 백준 7576 토마토 - Java (0) | 2023.06.30 |