-
[Java] BOJ 20157 화살을 쏘자!개발자 취업/코딩테스트 준비 2023. 6. 13. 23:25반응형
20157번: 화살을 쏘자!
호준이는 요즘 활 쏘기에 푹 빠져 있다. 열심히 활 쏘기를 연습하던 호준이는 쏠 때 마다 10점이 나오는 경지에 이르렀다. 이렇다 보니 한 방향으로 있는 과녁에 쏘는 것에 실증을 느낀 호준이는
www.acmicpc.net
테스트 코드
2 2 2 -2 -2 답: 1
정답 코드
- HashMap - key : 각도 / value : 풍선 수
- 사분면으로 나눠서 풀이해야함
- 사분면으로 나누지 않을 경우 테스트 코드에서 걸리는 문제 발생
- x, y가 0일때도 생각해야함
import java.io.*; import java.util.*; public class Main { static BufferedReader br; static BufferedWriter bw; static StringTokenizer st; static int N; static List<HashMap<Double, Integer>> list; public static void main(String[] args) throws IOException { br = new BufferedReader(new InputStreamReader(System.in)); bw = new BufferedWriter(new OutputStreamWriter(System.out)); N = Integer.parseInt(br.readLine()); list = new ArrayList<>(); for (int i = 0; i < 4; i++) { list.add(new HashMap<>()); } for (int i = 0; i < N; i++) { st = new StringTokenizer(br.readLine(), " "); double x = Double.parseDouble(st.nextToken()); double y = Double.parseDouble(st.nextToken()); double d = x / y; int key = -1; if (x >= 0 && y > 0) { key = 0; } else if (x < 0 && y >= 0) { key = 1; }else if (x <= 0 && y < 0) { key = 2; } else if (x > 0 && y <= 0) { key = 3; } if (list.get(key).containsKey(d)) { list.get(key).put(d, list.get(key).get(d) + 1); } else { list.get(key).put(d, 1); } } int max = 0; for (int i = 0; i < 4; i++) { for (double d : list.get(i).keySet()) { max = Math.max(max, list.get(i).get(d)); } } System.out.println(max); } }
'개발자 취업 > 코딩테스트 준비' 카테고리의 다른 글
[Java] BOJ 11048 이동하기 (1) 2023.06.18 [Java] BOJ 27964 콰트로치즈피자 (0) 2023.06.14 [Java] BOJ 1515 수 이어 쓰기 (0) 2023.06.13 [Java] BOJ 1394 암호 (0) 2023.06.12 [Java] BOJ 1897 토달기 (0) 2023.06.12