[백준 1000번 문제, JAVA] 네 번째 점

2023. 3. 5. 15:49·이전 게시글/공부 관련

문제

세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오.


코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        List<Point> pointList = new ArrayList<>();
        for (int i = 0; i < 3; i++) {
            String[] input = bf.readLine().split(" ");
            pointList.add(new Point(Integer.parseInt(input[0]), Integer.parseInt(input[1])));
        }

        List<Segment> segments = new ArrayList<>();
        segments.add(new Segment(pointList.get(0), pointList.get(1)));
        segments.add(new Segment(pointList.get(1), pointList.get(2)));
        segments.add(new Segment(pointList.get(2), pointList.get(0)));

        Segment segment = Collections.max(segments);

        Point answer1, answer2;
        answer1 = new Point(segment.p2.x, segment.p1.y);
        answer2 = new Point(segment.p1.x, segment.p2.y);

        for (Point p : pointList) {
            if (p.x == answer1.x && p.y == answer1.y) {
                System.out.printf("%d %d\n", answer2.x, answer2.y);
                break;
            } else if (p.x == answer2.x && p.y == answer2.y) {
                System.out.printf("%d %d\n", answer1.x, answer1.y);
                break;
            }
        }

    }

    static class Point {
        int x, y;
        Point(int x, int y) {
            this.x = x;
            this.y = y;
        }
    }

    static class Segment implements Comparable<Segment> {
        Point p1, p2;
        double length;
        double angle;

        Segment(Point p1, Point p2) {
            this.p1 = p1;
            this.p2 = p2;
            this.length = Math.sqrt(Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2));
            this.angle = Math.toDegrees(Math.atan2(p1.y - p2.y, p1.x - p2.x));
        }

        @Override
        public int compareTo(Segment o) {
            return (this.length > o.length)? 1 : -1;
        }
    }
}

해결


참고

링크

 

 

 

저작자표시 (새창열림)

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

프로그래밍 입문 학습 노트 (1)  (0) 2023.03.06
[백준 2477번 문제, JAVA] 참외밭  (0) 2023.03.06
파이썬 학습 노트 기초 (1)  (1) 2023.03.04
[백준 1100번 문제, JAVA] 하얀 칸  (0) 2023.03.04
자료구조와 알고리즘 학습 노트 기초 (1) 자료구조와 알고리즘  (0) 2023.03.04
'이전 게시글/공부 관련' 카테고리의 다른 글
  • 프로그래밍 입문 학습 노트 (1)
  • [백준 2477번 문제, JAVA] 참외밭
  • 파이썬 학습 노트 기초 (1)
  • [백준 1100번 문제, JAVA] 하얀 칸
aptenia
aptenia
공부하면서 배운 것들
  • aptenia
    새벽의 아이디어
    aptenia
  • 전체
    오늘
    어제
    • 분류 전체보기 (276)
      • f1tenth (2)
      • 이전 게시글 (268)
        • 개발 관련 (25)
        • 정보 관련 (19)
        • 공부 관련 (224)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
aptenia
[백준 1000번 문제, JAVA] 네 번째 점
상단으로

티스토리툴바