wa가 뜨는 이유를 모르겠습니다.

lhs7715f Reply 7 years 7 weeks ago
1. 예시의 예로 계산을 하면 내접한 경우가 되는데, 이 경우가 왜 inside로 처리가 되는지 이해가 안됩니다. 2. 내접은 inside, 외접은 outside로 처리하도록 해서(문제가 바라는 바와는 다르지만 예시를 적용해서) 짰는데, 계속 wa가 뜹니다ㅠㅠ 그냥 문제가 원하는 대로 해야할지, 아니면 짠 코드가 잘못된건지 알려주세요!!ㅠㅠㅠㅠ흑 import java.util.*; public class Main { public static void main(String args[]) { Scanner scan = new Scanner(System.in); double x1 = scan.nextDouble(); double y1 = scan.nextDouble(); double w1 = scan.nextDouble(); double h1 = scan.nextDouble(); double x2 = scan.nextDouble(); double y2 = scan.nextDouble(); double w2 = scan.nextDouble(); double h2 = scan.nextDouble(); if(Math.abs(x2-x1)+w2/2 < w1/2) { if (Math.abs(y2 - y1) +h2 / 2 <= (h1 / 2)) System.out.println("inside"); else if (Math.abs(y2 - y1)+ h2/2 < (h1 + h2) / 2) System.out.println("attach"); else System.out.println("outside"); } else if(w1 / 2 < Math.abs(x2-x1)+w2/2 && Math.abs(x2-x1)+w2/2 < (w1+w2)/2) { if (h1 / 2 <= Math.abs(y2 - y1) + h2 / 2 && Math.abs(y2 - y1)+ h2/2 <= (h1 + h2) / 2) System.out.println("attach"); else System.out.println("outside"); } else if(w1 / 2 == Math.abs(x2-x1)+w2/2 || Math.abs(x2-x1)+w2/2 == (w1+w2)/2) { if(Math.abs(y2-y1)+h2/2 < h1/2) System.out.println("inside"); else if (Math.abs(y2-y1)+h2/2 == (h1+h2)/2) System.out.println("attach"); else System.out.println("outside"); } else System.out.println("outside"); } }
keacotle Reply 7 years 7 weeks ago
1. 특별한 수학적 이유가 있는 것은 아닙니다. 단지 여러 경우에 동시에 해당하는 경우 연산의 우선순위가 필요해서 inside를 우선시할 뿐입니다. 2. 문제가 원하는 대로 하되 수학적인 오류가 없도록 하면 풀립니다. 추가적으로 질문글에는 코드를 올리지 말아 주시길 바랍니다. 제대로 문제에 연결된 경우 올리지 않아도 작성하신 코드는 추적이 가능합니다.