Lined Notebook

[1289] [Java] 원재의 메모리 복구하기

by HeshAlgo

<원재의 메모리 복구하기>

문제 설명

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV19AcoKI9sCFAZN&categoryId=AV19AcoKI9sCFAZN&categoryType=CODE

 

내 생각

문자열의 값을 하나하나 비교해서 초기화값(모두 0인경우)과 다른 경우 서로 반대되는 비트로 바꾸는 방식으로 문제를 풀었습니다. 좀 더 효율적으로 풀 수 있는 방법이 뭐가있을지 생각하다가 시간이 오래걸렸습니다. 

 

푼 시간

45분 55초

 

작성 코드

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
// 원재의 메모리 복구하기
import java.io.FileInputStream;
import java.util.*;
 
public class E1289 {
 
    public static void main(String args[]) throws Exception {
        String path = "input.txt";
        System.setIn(new FileInputStream(path));
        Scanner sc = new Scanner(System.in);
        int T = sc.nextInt();
        
        for(int test_case = 1; test_case <= T; test_case++) {
            String memory = sc.next();
            int answer = 0;
            char[] memoryArray = memory.toCharArray();
            char[] zeroArray = new char[memoryArray.length];
            for (int i = 0; i < zeroArray.length; i++) {
                zeroArray[i] = '0';
            }
            
            for (int i = 0; i < memoryArray.length; i++) {
                if (memoryArray[i] != zeroArray[i]) {
                    for (int j = i; j < memoryArray.length; j++) {
                        if (memoryArray[j] == '1') {
                            memoryArray[j] = '0';
                        } else if (memoryArray[j] == '0') {
                            memoryArray[j] = '1';
                        }
                    }
                    answer++;
                }
            }
            
            System.out.println("#" + test_case + " " + answer);
            
        }
        
    }
    
}
 
 

 

실행 결과

수정된 코드

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
// 원재의 메모리 복구하기
import java.io.FileInputStream;
import java.util.*;
 
public class E1289 {
 
    public static void main(String args[]) throws Exception {
        String path = "input.txt";
        System.setIn(new FileInputStream(path));
        Scanner sc = new Scanner(System.in);
        int T = sc.nextInt();
        
        for(int test_case = 1; test_case <= T; test_case++) {
            String memory = sc.next();
            int answer = 0;
            StringBuffer sb = new StringBuffer(memory);
            char point = '0';
            
            for (int i = 0; i < sb.length(); i++) {
                if (point != sb.charAt(i)) {
                    point = sb.charAt(i);
                    answer++;
                }
            }
            
            System.out.println("#" + test_case + " " + answer);
            
        }
        
    }
    
}
 
 

 

블로그의 정보

꾸준히 공부하는 개발 노트

HeshAlgo

활동하기