꾸물꾸물 졔의 개발공부

SWEA 1289 - 원재의 메모리 복구하기 ( JAVA ) 본문

알고리즘/SWEA

SWEA 1289 - 원재의 메모리 복구하기 ( JAVA )

체제 2022. 2. 8. 13:55

출처 - SW Expert Acadamy 

[ 알고리즘 ]

초기상태가 모두 0인 상태이기 때문에, 00000.... 일 것이다.

그것을 고려하여, 현재 값을 0부터 시작하여서 메모리를 앞에서 부터 스캔하고, 현재값과 상반되는 값이 나오면 0 -> 1 / 1->0 으로 바꾸어 주면서 count 를 올려주었다. 

즉, 단순 for 문 문제로 해결가능한 문제이다.

( 하지만, 초기값이 000... 이 아니고, 가변적인 메모리 값을 가지게 되면, 이방법은 통하지 않겠지 ㅎ.. ) 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import java.io.*;
 
public class Solution {
    public static void main(String[] args) throws NumberFormatException, IOException {
        BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
        int n= Integer.parseInt(br.readLine());
        StringBuilder sb= new StringBuilder();
        
        for(int testcase= 1; testcase <=n; testcase ++) {
            String s = br.readLine();
            char idx='0';
            int count=0
            for(int i=0; i<s.length(); i++) {
                if(s.charAt(i)!=idx) {
                    idx=s.charAt(i);
                    count++
                }
            }
            sb.append("#").append(testcase).append(" ").append(count).append("\n");
        }
        System.out.println(sb);
    }
     
}
cs

BufferedReader 와 StringBuilder 를 사용하였고

각 testcase 를 반복하며 , 초기 문자를 '0'으로 지정해두었다.

입력받은 메모리값의 길이만큼 돌면서, 초기문자와 다른값이 나오면 카운트를 하면서 초기값을 갱신