CT

[BOJ] 10단계 기하: 직사각형과 삼각

kinggora 2023. 4. 4. 23:40
1 27323 직사각형
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int A = sc.nextInt();
        int B = sc.nextInt();
        System.out.println(A*B);
    }
}

 

2 1085 직사각형에서 탈출
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer tokenizer = new StringTokenizer(reader.readLine());
        int x = Integer.parseInt(tokenizer.nextToken());
        int y = Integer.parseInt(tokenizer.nextToken());
        int w = Integer.parseInt(tokenizer.nextToken());
        int h = Integer.parseInt(tokenizer.nextToken());

        int a = w - x;
        int b = h - y;
        int min = Integer.MAX_VALUE;
        if(min > x) {
            min = x;
        }
        if(min > y) {
            min = y;
        }
        if(min > a) {
            min = a;
        }
        if(min > b) {
            min = b;
        }
        System.out.println(min);
    }
}

 

3 3009 네 번째 점
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        List<String> x = new ArrayList<>();
        List<String> y = new ArrayList<>();
        for(int i = 0; i < 3; i++) {
            StringTokenizer tokenizer = new StringTokenizer(reader.readLine());
            x.add(tokenizer.nextToken());
            y.add(tokenizer.nextToken());
        }
        //1번만 나온 점 => indexOf == lastIndexOf
        for(int i = 0; i < x.size(); i++) {
            if(x.indexOf(x.get(i)) == x.lastIndexOf(x.get(i))) {
                System.out.print(x.get(i) + " ");
            }
        }
        for(int i = 0; i < y.size(); i++) {
            if(y.indexOf(y.get(i)) == y.lastIndexOf(y.get(i))) {
                System.out.print(y.get(i));
            }
        }
    }
}

 

4 15894 수학은 체육과목 입니다
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        long n = Long.parseLong(reader.readLine());
        System.out.println(4 * n);
    }
}

*1 ≤ n ≤ 10^9 이므로 int의 범위를 초과한다.

 

5 9063 대지
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

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());
        //직사각형 높이: max(y)-min(y)
        //직사각형 밑변: max(x)-min(x)
        int minX = Integer.MAX_VALUE;
        int minY = Integer.MAX_VALUE;
        int maxX = Integer.MIN_VALUE;
        int maxY = Integer.MIN_VALUE;
        for(int i = 0; i < n; i++) {
            StringTokenizer tokenizer = new StringTokenizer(reader.readLine());
            int x = Integer.parseInt(tokenizer.nextToken());
            int y = Integer.parseInt(tokenizer.nextToken());
            if(x < minX) {
                minX = x;
            }
            if(x > maxX) {
                maxX = x;
            }
            if(y < minY) {
                minY = y;
            }
            if(y > maxY) {
                maxY = y;
            }
        }
        int area = (maxX - minX) * (maxY - minY);
        System.out.println(area);

    }
}

 

6 10101 삼각형 외우기
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        int a1 = Integer.parseInt(reader.readLine());
        int a2 = Integer.parseInt(reader.readLine());
        int a3 = Integer.parseInt(reader.readLine());
        if(a1+a2+a3 != 180) {
            System.out.println("Error");
        } else {
            if(a1 == a2 && a2 == a3) {
                System.out.println("Equilateral");
            } else if(a1 == a2 || a1 == a3 || a2 == a3) {
                System.out.println("Isosceles");
            } else {
                System.out.println("Scalene");
            }
        }
    }
}

 

7 5073 삼각형과 세 변
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        while(true) {
            String str = reader.readLine();
            if(str.equals("0 0 0")) {
                break;
            }
            StringTokenizer tokenizer = new StringTokenizer(str);
            int a = Integer.parseInt(tokenizer.nextToken());
            int b = Integer.parseInt(tokenizer.nextToken());
            int c = Integer.parseInt(tokenizer.nextToken());

            if(a == b && b == c) {
                sb.append("Equilateral\n");
            } else {
                if(a >= b && a >= c && a >= b + c) {
                    sb.append("Invalid\n");
                } else if(b >= a && b >= c && b >= a + c) {
                    sb.append("Invalid\n");
                } else if(c >= a && c >= b && c >= a + b) {
                    sb.append("Invalid\n");
                } else {
                    if(a == b || a == c || b == c) {
                        sb.append("Isosceles\n");
                    } else {
                        sb.append("Scalene\n");
                    }
                }
            }
        }
        System.out.println(sb);
    }
}

*invalid 검사에서 먼저 a,b,c 중 최댓값을 구하면 조건절을 1개로 줄일 수 있다.

 

8 14215 세 막대
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

        String str = reader.readLine();
        StringTokenizer tokenizer = new StringTokenizer(str);
        //삼각형의 조건: 가장 긴 변 < 나머지 변의 합
        int a = Integer.parseInt(tokenizer.nextToken());
        int b = Integer.parseInt(tokenizer.nextToken());
        int c = Integer.parseInt(tokenizer.nextToken());
        if(a >= b && a >= c) {
            if(a < b + c) {
                System.out.println(a+b+c);
            } else {
                System.out.println(2*(b+c)-1);
            }
        } else if(b >= a && b >= c) {
            if(b < a + c) {
                System.out.println(a+b+c);
            } else {
                System.out.println(2*(a+c)-1);
            }
        } else {
            if(c < a + b) {
                System.out.println(a+b+c);
            } else {
                System.out.println(2*(a+b)-1);
            }
        }
    }
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

        String str = reader.readLine();
        StringTokenizer tokenizer = new StringTokenizer(str);
        
        int[] edge = new int[3];
        for(int i = 0; i < 3; i++) {
            edge[i] = Integer.parseInt(tokenizer.nextToken());
        }
        Arrays.sort(edge);
        //삼각형의 조건: 가장 긴 변 < 나머지 변의 합
        if(edge[0] + edge[1] > edge[2]) {
            System.out.println(edge[0] + edge[1] + edge[2]);
        } else {
            System.out.println(2 * (edge[0] + edge[1]) - 1);
        }
    }
}

*Arrays.sort() 이용하여 변의 최댓값 구함