[JAVA] SWEA 1289 - 원재의 메모리 복구하기

hyng·2022년 1월 15일
0

SWEA

목록 보기
11/78

solution

처음 메모리 상태에서 입력으로 주어진 메모리의 상태로 바꾸는 것은 아래와 같이 두가지 방법이 있다.
1) 0,1,2...올라가는 순으로 바꾸는 방법
2) 2,1,0...내려가는 순으로 바꾸는 방법

메모리 비트를 하나 바꾸면 해당 값이 메모리 끝까지 덮어쓰기 때문에,
2,1,0.. 이런 식으로 내려가는 순으로 바꾸는 방법은
2에서 이미 맞는 값으로 바꾸어놓아도 1에서 값을 다시 바꿔버리면 이전에 바꿔놓은게 무용지물이 된다.
이런 식으로 바꿔나가면 당연히 최소 횟수로 복구할 수가 없다.
그래서 올라가는 순으로 바꿔주어야 한다.

code

import java.util.*;
class Solution
{
	public static void main(String args[]) throws Exception
	{
		Scanner sc = new Scanner(System.in);

        StringBuffer sb = new StringBuffer();

        int T = Integer.parseInt(sc.nextLine());
        for(int tc=1; tc<=T; tc++){
            sb.append("#").append(tc).append(" ");
            String input = sc.nextLine();
            int inputArray[] = getInputArray(input);
            sb.append(solve(inputArray)).append("\n");
           
        }
        System.out.println(sb);
	}
    static int solve(int inputArray[]){

        int count = 0;
        int len = inputArray.length;
        int originalArray[] = new int[len];
        for(int i=0; i<len; i++){
            if(inputArray[i] != originalArray[i]){
                count++;
                for(int j=i; j<len; j++){
                    originalArray[j] = inputArray[i];
                }
            }
        }
        return count;
        
    }
    static int[] getInputArray(String input){
        int array[] = new int[input.length()];
        
        for(int i=0; i<input.length(); i++){
            array[i] = input.charAt(i) - '0';
        }
        return array;
    }
}
profile
공부하고 알게 된 내용을 기록하는 블로그

0개의 댓글