코테/코드트리
[코드트리/NOVICE MID] 이상한 진수 2 (JAVA)
imname1am
2023. 11. 8. 15:23
반응형
🔺 문제
🔺 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
char[] arr = br.readLine().toCharArray();
int max = 0;
// 모든 숫자를 다른 숫자로 바꿔보며 경우의 수 구하기
for(int i = 0 ; i < arr.length ; i++) {
// 1) 자릿수 바꾸기
if(arr[i] == '0') {
arr[i] = '1';
}
else {
arr[i] = '0';
}
// 2) 최댓값 구하기
String str = "";
for(char c : arr) str += c; // 1110
// String형을 int형으로 변환하기 (2진수)
int num = Integer.parseInt(str);
// 2진수 int형을 10진수로 변환
int tmp = 0;
for(int j = 0 ; j < str.length() ; j++) {
tmp += Math.pow(2, str.length() - 1 - j) * (str.charAt(j) - '0');
}
max = Math.max(max, tmp); // 최댓값 갱신하기
// 3) 자릿수 원상복구
arr[i] = (arr[i] == '0') ? '1' : '0';
}
System.out.println(max);
}
}
|
cs |
🧩 해결 아이디어
• 완전탐색
- 모든 숫자를 다른 숫자로 바꿔보며 경우의 수 구하기
1) 자릿수 바꾸기
2) 2진수를 10진수로 변환한 값을 구하고, 최댓값과 비교해 더 큰 값으로 갱신하기
3) 자릿수 원상복구하기
💬 느낀 점
한 번에 생각하기 어려우면 모든 상황 탐색하는 것으로...
1회독 | 2회독 | 3회독 | 4회독 | 5회독 |
V |
반응형