개발자 톡
연습문제 톡
[HSAT 2회 정기 코딩 인증평가 기출] 사물인식 최소 면적 산출 프로그램
[HSAT 2회 정기 코딩 인증평가 기출] 사물인식 최소 면적 산출 프로그램 자바 코드 반례 부탁드립니다..
- 등록일
- 2023-07-16 18:36:48
- 조회수
- 713
- 작성자
- sjk1062005
전체 탐색을 시도했는데 왜 오답이 나오는 걸까요..?
제가 무엇을 놓친 건지 알려주실 고수님 부탁드립니다..ㅜㅜ
import java.util.*;
import java.io.*;
public class Main
{
static int N;
static int K;
public static void main(String args[]) throws IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
N = Integer.parseInt(st.nextToken());
K = Integer.parseInt(st.nextToken());
int answer = Integer.MAX_VALUE;
Map> map = new LinkedHashMap<>();
for (int i = 1; i <= K; i++) {
map.put(i, new ArrayList<>());
}
for (int i = 0; i < N; i++) {
st = new StringTokenizer(br.readLine(), " ");
int x = Integer.parseInt(st.nextToken());
int y = Integer.parseInt(st.nextToken());
int k = Integer.parseInt(st.nextToken());
List list = map.get(k);
list.add(new int[]{x, y});
}
if (K == 1) {
System.out.println(0);
} else {
// 첫 번째 위치
for (int key1 : map.keySet()) {
for (int[] position1 : map.get(key1)) {
int x1 = position1[0];
int y1 = position1[1];
// 두 번째 위치
for (int key2 : map.keySet()) {
if (key1 == key2) continue;
for (int[] position2 : map.get(key2)) {
int x2 = position2[0];
int y2 = position2[1];
int minX = Math.min(x1, x2);
int maxX = Math.max(x1, x2);
int minY = Math.min(y1, y2);
int maxY = Math.max(y1, y2);
// 전체 탐색
int count = 2;
for (int targetKey : map.keySet()) {
if (targetKey == key1 || targetKey == key2) continue;
List targetList = map.get(targetKey);
for (int[] targetPosition : targetList) {
if (rangeCheck(minX, maxX, minY, maxY, targetPosition)) {
count++;
break;
}
}
}
if (count == K) {
int area = (maxX - minX) * (maxY - minY);
answer = Math.min(answer, area);
}
}
}
}
}
System.out.println(answer);
}
}
static boolean rangeCheck(int minX, int maxX, int minY, int maxY, int[] targetPosition) {
int x = targetPosition[0];
int y = targetPosition[1];
return minX <= x && x <= maxX && minY <= y && y <= maxY;
}
}
#[hsat_2회_정기_코딩_인증평가_기출]_사물인식_최소_면적_산출_프로그램
#사물인식_최소_면적_산출_프로그램
#java