DRAWRECT 질문입니다. mewards DRAWRECT 오답이라고 결과 뜨는데 왜 오답인지 도무지 모르겠어서 글 남깁니다. import java.util.ArrayList; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); ArrayList<Integer> X = new ArrayList<>(); ArrayList<Integer> Y = new ArrayList<>(); int cases = sc.nextInt(); while (cases-- > 0) { for (int i = 0; i < 3; i++) { int x = sc.nextInt(); int y = sc.nextInt(); X.add(x); Y.add(y); } } for (int i = 0; 3 * i < X.size(); i++) { double a, b, c; int ans_x, ans_y; a = Math.pow((X.get(3 * i) - X.get(3 * i + 1)), 2) + Math.pow((Y.get(3 * i) - Y.get(3 * i + 1)), 2); b = Math.pow((X.get(3 * i + 1) - X.get(3 * i + 2)), 2) + Math.pow((Y.get(3 * i + 1) - Y.get(3 * i + 2)), 2); c = Math.pow((X.get(3 * i) - X.get(3 * i + 2)), 2) + Math.pow((Y.get(3 * i) - Y.get(3 * i + 2)), 2); if (Math.max(a, b) == a) { if (Math.max(a, c) == a) { ans_x = X.get(3 * i) - (X.get(3 * i + 2) - X.get(3 * i + 1)); ans_y = Y.get(3 * i) - (Y.get(3 * i + 2) - Y.get(3 * i + 1)); } else { ans_x = X.get(3 * i) - (X.get(3 * i + 1) - X.get(3 * i + 2)); ans_y = Y.get(3 * i + 1) - (Y.get(3 * i + 1) - Y.get(3 * i + 2)); } } else { if (Math.max(b, c) == b) { ans_x = X.get(3 * i + 2) - (X.get(3 * i) - X.get(3 * i + 1)); ans_y = Y.get(3 * i + 2) - (Y.get(3 * i) - Y.get(3 * i + 1)); } else { ans_x = X.get(3 * i) - (X.get(3 * i + 1) - X.get(3 * i + 2)); ans_y = Y.get(3 * i) - (Y.get(3 * i + 1) - Y.get(3 * i + 2)); } } System.out.println(ans_x + " " + ans_y); } } } 10년 전
1개의 댓글이 있습니다. Being 코드가 좋게 말해 대칭적이고 나쁘게 말해 중복이 많은데, 중복된 코드 중 패턴에 안 맞는 부분이 있는 것 같습니다. 문제에서 축에 평행한 직사각형이라 하였는데, 보다 더 일반적인 문제를 푸신 것 같습니다. 10년 전 link 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
mewards
DRAWRECT
오답이라고 결과 뜨는데 왜 오답인지 도무지 모르겠어서
글 남깁니다.
10년 전