코테/코드트리

[코드트리/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        

 

반응형