BraveDuck 문제 자문 구합니다... richiejang 예문을 실행한 결과 같은 값이 나오는데 왜 오답 처리 되는지 알 수가 없어 자문구합니다. 한 수 가르침 부탁 드립니다. 미리 답변에 감사드립니다. import java.util.*; import java.util.stream.Collectors; public class Main { static class Stone { private int x,y; private boolean checked; public Stone(int x, int y) { this.x = x; this.y = y; checked = false; } public Stone(String sx, String sy) { this.x = Integer.parseInt(sx); this.y = Integer.parseInt(sy); checked = false; } public int getX() { return x; } public int getY() { return y; } public boolean getChecked() { return checked; } public void setChecked(boolean b) { this.checked = b; } } public static boolean isNearStone (Stone c, Stone n, int j) { if (n.getChecked()) return false; if (c.getX() == n.getX()) { return Math.abs(n.getY() - c.getY()) <= j; } else if (c.getY() == n.getY()) { return Math.abs(n.getX() - c.getX()) <= j; } return false; } public static String checkCrossWater (Stone sp, Stone ep, List<Stone> stones, int jump) { LinkedList<Stone> queue = new LinkedList<>(); stones.add(ep); queue.add(sp); boolean isChecked = false; while (!queue.isEmpty() && !isChecked) { Stone curp = queue.pop(); if (curp.getX() == ep.getX() && curp.getY() == ep.getY()) { isChecked = true; break; } List<Stone> finds = stones.stream().filter(p -> isNearStone(curp, p, jump)).collect(Collectors.toList()); finds.stream().forEach(p -> p.setChecked(true)); queue.addAll(finds); } if (isChecked) return "YES"; else return "NO"; } public static void main (String[] args) { Scanner scan = new Scanner(System.in); List<String> result = new ArrayList<>(); int casenum = Integer.parseInt(scan.nextLine()); while (casenum > 0) { int jump = Integer.parseInt(scan.nextLine()); String[] in1 = scan.nextLine().split(" "); Stone startp = new Stone(Integer.parseInt(in1[0]), Integer.parseInt(in1[1])); String[] in2 = scan.nextLine().split(" "); Stone endp = new Stone(Integer.parseInt(in2[0]), Integer.parseInt(in2[1])); int stoneCount = Integer.parseInt(scan.nextLine()); List<Stone> stones = new ArrayList<>(); while (stoneCount > 0) { String[] locs = scan.nextLine().split(" "); stones.add(new Stone(locs[0], locs[1])); stoneCount--; } result.add (checkCrossWater(startp, endp, stones, jump)); casenum--; } scan.close(); result.stream().forEach( it -> System.out.println (it) ); } } 9년 전
0개의 댓글이 있습니다. 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
richiejang
예문을 실행한 결과 같은 값이 나오는데 왜 오답 처리 되는지 알 수가 없어 자문구합니다.
한 수 가르침 부탁 드립니다.
미리 답변에 감사드립니다.
import java.util.*;
import java.util.stream.Collectors;
public class Main {
static class Stone {
private int x,y;
private boolean checked;
public Stone(int x, int y) {
this.x = x;
this.y = y;
checked = false;
}
public Stone(String sx, String sy) {
this.x = Integer.parseInt(sx);
this.y = Integer.parseInt(sy);
checked = false;
}
}
9년 전