728x90
반응형
문제
세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오.
입력
세 점의 좌표가 한 줄에 하나씩 주어진다. 좌표는 1보다 크거나 같고, 1000보다 작거나 같은 정수이다.
출력
직사각형의 네 번째 점의 좌표를 출력한다.
예제 입력 1
30 20
10 10
10 20
예제 출력 1
30 10
※ 접근 방법
(1) 포인트 클래스를 만든다.(x, y)
(2) 포인트를 리스트에 담는다.
(3) x맵과 y맵을 만들고 값을 넣어준다.
(4) Iterator로 x, y값의 갯수를 새고 적은 것을 minX, minY값을 넣어준다.
(5) minX, minY를 출력한다.
package boj;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
public class NoFourPoint {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
List<Point> list = new ArrayList<>();
for (int i = 0; i < 3; i++) {
Point a = new Point(sc.nextInt(), sc.nextInt());
list.add(a);
}
Map<Integer, Integer> lessX = new HashMap<>();
Map<Integer, Integer> lessY = new HashMap<>();
for (int i = 0; i < list.size(); i++) {
Point temp = list.get(i);
if(!lessX.containsKey(temp.x)) lessX.put(temp.x, 1);
else lessX.replace(temp.x, lessX.get(temp.x) + 1);
if(!lessY.containsKey(temp.y)) lessY.put(temp.y, 1);
else lessY.replace(temp.y, lessY.get(temp.y) + 1);
}
Iterator<Integer> irX = lessX.keySet().iterator();
int minX = 0;
while(irX.hasNext()) {
int key = irX.next();
if(minX == 0) minX = key;
else {
if(lessX.get(key) < lessX.get(minX)) minX = key;
}
}
Iterator<Integer> irY = lessY.keySet().iterator();
int minY = 0;
while(irY.hasNext()) {
int key = irY.next();
if(minY == 0) minY = key;
else {
if(lessY.get(key) < lessY.get(minY)) minY = key;
}
}
System.out.println(minX + " " + minY);
}
}
class Point {
int x;
int y;
Point(int x, int y) {
this.x = x;
this.y = y;
}
}
728x90
반응형
'코딩테스트 > 백준' 카테고리의 다른 글
[백준/java] 3053번: 택시 기하학 (0) | 2021.04.07 |
---|---|
[백준/java] 4153번 직각삼각형 - 피타고라스의 정리 (0) | 2021.03.11 |
[백준/java] 직사각형에서 탈출 (0) | 2021.02.01 |
[백준/java] 10757번 큰 수 A+B (BigDecimal) (0) | 2021.01.30 |
[백준/java] 4948 베르트랑 공준 - 에라스토테네스의 체 적용 (0) | 2020.12.23 |
댓글