[백준 1002번 문제, JAVA] 터렛

2023. 2. 23. 22:14·정리 전 게시글/공부 관련

문제


코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(reader.readLine());
        List<Integer> answers = new ArrayList<>();
        for (int i = 0; i < n; i++) {
            String[] tokens = reader.readLine().split(" ");
            Point p1 = new Point(Integer.parseInt(tokens[0]), Integer.parseInt(tokens[1]), Integer.parseInt(tokens[2]));
            Point p2 = new Point(Integer.parseInt(tokens[3]), Integer.parseInt(tokens[4]), Integer.parseInt(tokens[5]));
            answers.add(search(p1, p2));
        }
        for (Integer answer : answers) {
            System.out.println(answer);
        }
    }
    static class Point {
        public Point(double x, double y, double r) {
            this.x = x;
            this.y = y;
            this.r = r;
        }
        double x, y, r;
    }
    static int search(Point turret1, Point turret2) {
        List<Double> list = new ArrayList<>();
        list.add(turret1.r);
        list.add(turret2.r);
        list.add(Math.sqrt(Math.pow(turret2.x - turret1.x, 2) + Math.pow(turret2.y - turret1.y, 2)));
        Double r3 = Collections.max(list);
        list.remove(r3);
        if(turret1.x == turret2.x && turret1.y == turret2.y && turret1.r == turret2.r) {
            return -1;
        } else if (r3 > list.get(0) + list.get(1) ) {
            return 0;
        } else if (r3 == list.get(0) + list.get(1)) {
            return 1;
        } else if (r3 < list.get(0) + list.get(1)) {
            return 2;
        }
        return 0;
    }
}

 


해결

문제는 2개의 터렛의 탐지 범위에 있을 수 있는 마린의 개수를 구하는 것이다

뭔 터렛으로 지상유닛을 감지하고 있어

 

암튼 

두 원에서 겹치는 좌표를 구해야하는 것은 알겠는데

그것을 어떻게 구해야 하는지 인터넷에서 찾아보다가 잘못된 지식으로 코드를 작성하고 있었다

 

문제를 풀면서 이런식으로 반례를 찾아봤는데 대강 이해는하고있는데 잘안되었다

그러다 친구가 이건 삼각형을 구해야 한다고 너무 잘 설명해줘서 풀 수 있었다

 

 

저작자표시 (새창열림)

'정리 전 게시글 > 공부 관련' 카테고리의 다른 글

[백준 1000번 문제, JAVA] A+B  (0) 2023.02.25
[백준 1075번 문제, JAVA] 나누기  (0) 2023.02.23
[Java] 안드로이드 채팅 화면을 리사이클러뷰와 뷰바인딩을 이용해서 만들어보자  (1) 2023.02.06
[프로그래머스 Level 2, Java] 삼각 달팽이  (0) 2023.01.15
[프로그래머스 Level 2, Java] 이진 변환 반복하기  (0) 2023.01.15
'정리 전 게시글/공부 관련' 카테고리의 다른 글
  • [백준 1000번 문제, JAVA] A+B
  • [백준 1075번 문제, JAVA] 나누기
  • [Java] 안드로이드 채팅 화면을 리사이클러뷰와 뷰바인딩을 이용해서 만들어보자
  • [프로그래머스 Level 2, Java] 삼각 달팽이
aptenia
aptenia
공부하면서 배운 것들
  • aptenia
    새벽의 아이디어
    aptenia
  • 전체
    오늘
    어제
    • 분류 전체보기 (279)
      • 논문 (0)
      • Roboracer (2)
      • 개발 아무거나 (1)
      • 일상 아무거나 (2)
      • 정리 전 게시글 (268)
        • 개발 관련 (25)
        • 정보 관련 (19)
        • 공부 관련 (224)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 네이버 블로그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    빅데이터공모전
    프로그래머스PCCE
    일본규슈공업대학교
    티스토리반응형2스킨편집
    자바
    마크스크립트
    캡스톤디자인
    컨텍스트스위칭
    티스토리스킨편집
    C++강좌
    C언어
    프로그래머스
    스크롤바CSS
    마인크래프트스크립트
    C언어강좌
    파이썬
    반복하지않는수
    이것이자바다
    티스토리HTML
    안드로이드
    c언어초보
    이것이자바다연습문제
    마인크래프트강화스크립트
    이것이자바다확인문제
    마크
    마인크래프트
    공개SW개발자대회
    파이어베이스
    콜라츠추측
    백준
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
aptenia
[백준 1002번 문제, JAVA] 터렛
상단으로

티스토리툴바