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() 이용하여 변의 최댓값 구함