[백준 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
  • 전체
    오늘
    어제
    • 분류 전체보기 (277)
      • f1tenth (2)
      • 개발 관련 아무거나 (1)
      • 정리 전 게시글 (268)
        • 개발 관련 (25)
        • 정보 관련 (19)
        • 공부 관련 (224)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바