728x90
반응형
2024.08.29기준 - 실버3
728x90
백준, BEAKJOON, BOJ, JAVA, 자바
풀이
이 문제는 서로 다른 차의 개수의 최댓값과 최솟값을 출력하는 문제입니다.
1. 최대 차이의 개수 계산
최댓값은 n개의 정수로 이루어진 집합에서 가능한 모든 쌍의 조합의 수는 n(n - 1)/2이므로 그대로 출력을 해줍니다.
// N개의 정수로 이루어진 집합에서 가능한 모든 쌍의 개수는 조합의 수
sb.append(n * (n - 1) / 2).append("\n");
2. 최대 차이의 실례 출력
2의 거듭제곱 수는 서로 다른 차의 개수를 최대로 만듭니다. 왜냐하면, 2의 거듭제곱 수의 차는 항상 서로 다르기 때문입니다. 예를 들어, 1, 2, 4, 8의 차는 1, 2, 3, 4, 6, 7로 모두 다릅니다.
int num = 1;
for (int i = 0; i < n; i++) {
sb.append(num).append(" ");
num *= 2; // 2의 거듭제곱 수의 차는 항상 서로 다르다.
}
3. 최소 차이의 개수 계산
연속된 정수의 차는 항상 1이므로, 서로 다른 차의 개수는 N - 1이 됩니다.
// 연속된 수를 선택하면 무조건 차는 1이기 때문에, 최소 차이의 개수는 n - 1이 된다.
sb.append("\n").append(n - 1).append("\n");
4. 최소 차이의 실례 출력
연속된 정수의 차는 항상 1이므로, 1을 증가하면서 출력해줍니다.
num = 1;
for (int i = 0; i < n; i++) {
sb.append(num).append(" ");
num++; // 연속된 정수로 이루어진 집합을 출력
}
코드
package Main;
import java.io.*;
import java.util.*;
public 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));
StringBuilder sb = new StringBuilder();
int n = Integer.parseInt(br.readLine());
// N개의 정수로 이루어진 집합에서 가능한 모든 쌍의 개수는 조합의 수
sb.append(n * (n - 1) / 2).append("\n");
int num = 1;
for (int i = 0; i < n; i++) {
sb.append(num).append(" ");
num *= 2; // 2의 거듭제곱 수의 차는 항상 서로 다르다.
}
// 연속된 수를 선택하면 무조건 차는 1이기 때문에, 최소 차이의 개수는 n - 1이 된다.
sb.append("\n").append(n - 1).append("\n");
num = 1;
for (int i = 0; i < n; i++) {
sb.append(num).append(" ");
num++; // 연속된 정수로 이루어진 집합을 출력
}
bw.write(sb.toString());
bw.flush();
bw.close();
br.close();
}
}
728x90
반응형
'코딩테스트 일기 (BAEKJOON)' 카테고리의 다른 글
BEAKJOON / 백준 - JAVA 14494번 다이나믹이 뭐예요? (0) | 2024.08.30 |
---|---|
BEAKJOON / 백준 - JAVA 19572번 가뭄(Small) (0) | 2024.08.30 |
BEAKJOON / 백준 - JAVA 28353번 고양이 카페 (3) | 2024.08.28 |
BEAKJOON / 백준 - JAVA 3845번 잔디깍기 (0) | 2024.08.27 |
BEAKJOON / 백준 - JAVA 9465번 스티커 (0) | 2024.08.26 |