[백준 1004번] 자바 문제풀이
처음 문제를 보면 바로 보이지 않을 수 있지만
생각을 해보면 고려해서 생각해줘야할 경우는 크게 3가지가 있다는 것을 알 수 있다.
첫 번째로 출발점과 도착점이 같은 서로 같은 행성안에 있는경우이다. 이 경우 진입/이탈 횟수는 0번이다.
두 번째로 출발점 혹은 도착점 중에 하나만 행성안에 있는 경우이다. 이 경우 진입/이탈 횟수는 1번이다.
세 번째로 출발점, 도착점 모두 행성 안에 없는 경우이다. 이 경우에도 진입/이탈 횟수는 0번이다.
따라서 출발점 혹은 도착점 중에 하나만 행성안에 있는 경우만 구분해서 카운트해준다면 원하는 답을 손쉽게 얻을 수 있다.
우선 행성의 위치좌표 x와 y 반지름인 r을 저장하는 클래스 Planet을 만들어주었다.
그리고 행성의 중심과 도착점 그리고 행성의 중심과 출발점 까지의 거리를 각각 계산해줄 distance라는 메소드를 만들어주었다.
테스트케이스의 개수를 입력받고 출발점과 도착점의 좌표를 입력받는다.
그리고 행성들의 개수를 입력받은 후 행성들의 좌표와 반지름을 모두 입력받아서 ArrayList인 planets에 저장한 후
각각의 행성과 출발점, 도착점과의 거리를 계산해서 위의 언급한 대로 출발점 혹은 도착점 둘중 하나만 행성안에 있는 경우의 수를
카운트해서 count변수에 1씩 추가해준다.
전체 코드는 다음과 같다.
