728x90
반응형
2024.11.13기준 - 브론즈2
728x90
백준, BEAKJOON, BOJ, JAVA, 자바
🟥 풀이
이 문제는 수가 주어질 떄, 2비트와 3비트로 나뉘어 출력하는 문제입니다.
1. 입력받은 비트 수로 3비트와 2비트의 개수를 구합니다.
// 3비트의 개수
int threeCount = n % 3 == 1 ? n / 3 - 1 : n / 3;
// 2비트의 개수
int twoCount = (n - 3 * threeCount) / 2;
2. 총 나뉘어진 비트의 개수를 먼저 출력합니다.
// 총 합을 출력
sb.append(threeCount + twoCount).append("\n");
3. 사이에 빈 값을 주기 위해 첫 번째 값은 먼저 출력합니다.
// 첫 공백때문에 첫 번째 값은 미리 입력
if (threeCount > 0) {
threeCount--;
sb.append("3");
} else {
twoCount--;
sb.append("2");
}
4. 3비트와 2비트의 개수 만큼 출력합니다.
// 3비트의 개수만큼 3을 입력
while (threeCount-- > 0) {
sb.append(" 3");
}
// 2비트의 개수만큼 2를 입력
while (twoCount-- > 0) {
sb.append(" 2");
}
🟪 코드
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()); // 분해해야되는 비트
// 3비트의 개수
int threeCount = n % 3 == 1 ? n / 3 - 1 : n / 3;
// 2비트의 개수
int twoCount = (n - 3 * threeCount) / 2;
// 총 합을 출력
sb.append(threeCount + twoCount).append("\n");
// 첫 공백때문에 첫 번째 값은 미리 입력
if (threeCount > 0) {
threeCount--;
sb.append("3");
} else {
twoCount--;
sb.append("2");
}
// 3비트의 개수만큼 3을 입력
while (threeCount-- > 0) {
sb.append(" 3");
}
// 2비트의 개수만큼 2를 입력
while (twoCount-- > 0) {
sb.append(" 2");
}
bw.write(sb.toString());
bw.flush();
bw.close();
br.close();
}
}
728x90
반응형
'코딩테스트 일기 (BAEKJOON)' 카테고리의 다른 글
BEAKJOON / 백준 - JAVA 32369번 양파 실험 (0) | 2024.11.14 |
---|---|
BEAKJOON / 백준 - JAVA 28097번 모범생 포닉스 (0) | 2024.11.13 |
BEAKJOON / 백준 - JAVA 32384번 사랑은 고려대입니다 (0) | 2024.11.12 |
BEAKJOON / 백준 - JAVA 32498번 Call for Problems (0) | 2024.11.11 |
BEAKJOON / 백준 - JAVA 32529번 래환이의 여자친구 사귀기 대작전 (0) | 2024.11.10 |