[JAVA] 백준 10단계
2024. 11. 12. 10:29ㆍ코딩 테스트(Coding Test)/백준
27323 직사각형
나의 답) 100ms
import java.io.*;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int A = Integer.parseInt(br.readLine());
int B = Integer.parseInt(br.readLine());
System.out.print((A * B));
}
}
1085 직사각형에서 탈출
나의 답1) 104ms
import java.io.*;
import java.util.StringTokenizer;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int x = Integer.parseInt(st.nextToken());
int y = Integer.parseInt(st.nextToken());
int w = Integer.parseInt(st.nextToken());
int h = Integer.parseInt(st.nextToken());
int left = x;
int right = w - x;
int bottom = y;
int top = h - y;
int ans = Math.min(Math.min(left, right), Math.min(top, bottom));
System.out.print(ans);
}
}
나의 답2) 104ms
import java.io.*;
import java.util.StringTokenizer;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int x = Integer.parseInt(st.nextToken());
int y = Integer.parseInt(st.nextToken());
int w = Integer.parseInt(st.nextToken());
int h = Integer.parseInt(st.nextToken());
int left = x;
int right = w - x;
int bottom = y;
int top = h - y;
System.out.print(Math.min(Math.min(left, right), Math.min(top, bottom)));
}
}
다른 사람의 답) 104ms
import java.io.*;
import java.util.StringTokenizer;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int x = Integer.parseInt(st.nextToken());
int y = Integer.parseInt(st.nextToken());
int w = Integer.parseInt(st.nextToken());
int h = Integer.parseInt(st.nextToken());
int[] dis = new int[3];
int min = x;
w -= x;
h -= y;
dis[0] = y;
dis[1] = w;
dis[2] = h;
for (int i = 0; i < 3; i++) {
if (dis[i] < min) min = dis[i];
}
System.out.print(min);
}
}
3009 네 번째 점
나의 답) 120ms
import java.io.*;
import java.util.StringTokenizer;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int x = 0, y = 0;
for (int i = 0; i < 3; i++) {
st = new StringTokenizer(br.readLine());
x ^= Integer.parseInt(st.nextToken());
y ^= Integer.parseInt(st.nextToken());
}
System.out.print(x + " " + y);
}
}
15894 수학은 체육과목 입니다
나의 답) 100ms
import java.io.*;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
long n = Integer.parseInt(br.readLine());
System.out.print(4 * n);
}
}
다른 사람의 답1) 104ms
import java.io.*;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
long n = Long.parseLong(br.readLine());
System.out.print(4 * n);
}
}
9063 대지
나의 답) 248ms
import java.io.*;
import java.util.StringTokenizer;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int n = Integer.parseInt(br.readLine());
int minX = Integer.MAX_VALUE, minY = Integer.MAX_VALUE;
int maxX = Integer.MIN_VALUE, maxY = Integer.MIN_VALUE;
for (int i = 0; i < n; i++) {
st = new StringTokenizer(br.readLine());
int x = Integer.parseInt(st.nextToken());
int y = Integer.parseInt(st.nextToken());
if (x < minX) minX = x;
if (x > maxX) maxX = x;
if (y < minY) minY = y;
if (y > maxY) maxY = y;
}
System.out.print((maxX - minX) * (maxY - minY));
}
}
10101 삼각형 외우기
나의 답) 104ms
import java.io.*;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[] arr = new int[3];
int total = 0;
for (int i = 0; i < 3; i++) {
arr[i] = Integer.parseInt(br.readLine());
total += arr[i];
}
if (total != 180) System.out.print("Error");
else if (arr[0] == arr[1] && arr[0] == arr[2]) System.out.print("Equilateral");
else if (arr[0] == arr[1] || arr[1] == arr[2] || arr[2] == arr[0]) System.out.print("Isosceles");
else System.out.print("Scalene");
}
}
5073 삼각형과 세 변
나의 답) 96ms
import java.io.*;
import java.util.StringTokenizer;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int x = 1, y = 1, z = 1;
while (true) {
st = new StringTokenizer(br.readLine());
x = Integer.parseInt(st.nextToken());
y = Integer.parseInt(st.nextToken());
z = Integer.parseInt(st.nextToken());
if (x == 0 && y == 0 && z == 0) break;
if (x + y <= z || y + z <= x || x + z <= y) {
System.out.println("Invalid");
} else if (x == y && y == z) {
System.out.println("Equilateral");
} else if (x == y || y == z || x == z) {
System.out.println("Isosceles");
} else {
System.out.println("Scalene");
}
}
}
}
다른 사람의 답1) 104ms
import java.io.*;
import java.util.StringTokenizer;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
while (true) {
StringTokenizer st = new StringTokenizer(br.readLine());
int x = Integer.parseInt(st.nextToken());
int y = Integer.parseInt(st.nextToken());
int z = Integer.parseInt(st.nextToken());
if (x == 0 && y == 0 && z == 0) break;
if ((x + y + z) - Math.max(x, Math.max(y, z) * 2) > 0) {
if (x == y && y == z) System.out.println("Equilateral");
else if (x != y && y != z && z != x) System.out.println("Scalene");
else System.out.println("Isosceles");
} else System.out.println("Invalid");
}
}
}
다른 사람의 답2) 100ms
import java.io.*;
import java.util.*;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
StringBuilder sb = new StringBuilder();
while (true) {
st = new StringTokenizer(br.readLine());
int[] triangles = new int[3];
for (int i = 0; i < 3; i++) {
triangles[i] = Integer.parseInt(st.nextToken());
}
if (triangles[0] == 0) break;
Arrays.sort(triangles);
if (triangles[0] + triangles[1] <= triangles[2]) sb.append("Invalid");
else {
if (triangles[0] == triangles[1] && triangles[1] == triangles[2]) sb.append("Equilateral");
else if (triangles[0] == triangles[1] || triangles[1] == triangles[2]) sb.append("Isosceles");
else sb.append("Scalene");
}
sb.append("\n");
}
System.out.print(sb);
}
}
14215 세 막대
나의 답) 104ms
import java.io.*;
import java.util.*;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
int c = Integer.parseInt(st.nextToken());
System.out.print(maxTriangle(a, b, c));
}
public static int maxTriangle(int a, int b, int c) {
int[] sides = {a, b, c};
Arrays.sort(sides);
if (sides[0] + sides[1] > sides[2]) return sides[0] + sides[1] + sides[2];
else {
sides[2] = sides[0] + sides[1] - 1;
return sides[0] + sides[1] + sides[2];
}
}
}
문제 풀이 접근
- 삼각형 조건 적용: 삼각형을 만들기 위해서는 아래와 같은 조건을 만족해야 합니다:
- a + b > c
- a + c > b
- b + c > a
- 둘레를 최대로 만들기:
- 만약 주어진 a, b, c가 삼각형을 만드는 조건을 만족하지 않는다면, 가장 긴 막대의 길이를 줄여서 조건을 만족할 때까지 줄여야 합니다.
- 예를 들어, a <= b <= c라고 가정했을 때, a + b > c를 만족하지 않으면 c를 a + b - 1로 줄여야 조건을 만족할 수 있습니다.
- 알고리즘:
- 입력받은 세 수를 크기 순서대로 정렬합니다.
- 만약 가장 긴 변 <= 나머지 두 변의 합이라면 삼각형을 만들 수 있는 상태이므로 둘레를 출력합니다.
- 그렇지 않다면 가장 긴 변을 나머지 두 변의 합 - 1로 줄여서 조건을 만족하게 만든 후 둘레를 구합니다.
다른 사람의 답) 100ms
import java.io.*;
import java.util.*;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
int c = Integer.parseInt(st.nextToken());
int s = 0;
if ( a == b && b == c && c == a ) s = a + b + c;
else if ( a + b <= c ) {
c = a + b - 1;
s = a + b + c;
}
else if ( a + c <= b ) {
b = a + c - 1;
s = a + b + c;
}
else if ( b + c <= a ) {
a = b + c - 1;
s = a + b + c;
}
else s = a + b + c;
System.out.print(s);
}
}
'코딩 테스트(Coding Test) > 백준' 카테고리의 다른 글
[JAVA] 백준 13단계 (0) | 2024.11.24 |
---|---|
[JAVA] 백준 7단계 (0) | 2024.09.10 |
[JAVA] 백준 6단계 (1) | 2024.09.09 |
[JAVA] 백준 5단계 (3) | 2024.09.09 |
[JAVA] 백준 4단계 (0) | 2024.09.05 |