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

최대 1 분 소요

문제 링크

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


풀이 과정

아래 예시를 보며 설명하겠습니다.


target 은 되돌아 가려고 하는 원래 상태를, before 는 덮어씌우기 전 메모리 모습을, after 는 덮어씌운 후의 메모리 모습을 나타냅니다. target[0] 과 target[1] 이 다르므로, 1번 인덱스부터 끝까지 1로 덮어씌우는 작업이 있었던 것을 알 수 있습니다. 여기서 한 번을 고치게 됩니다.


target[1]과 target[2]이 다르므로, 2번 인덱스부터 끝까지 0으로 덮어씌우는 작업이 있었던 것을 알 수 있습니다. 두 번 고쳤습니다.


target[2]와 target[3]이 다르므로, 3번 인덱스부터 끝까지 1로 덮어씌우는 작업이 있었고, target[3]과 target[4]가 다르므로 4번 인덱스를 0으로 덮어씌우는 작업이 있었습니다.

즉, 문제에서 주어진 메모리의 원래 값의 현재 요소 대비 다음 요소가 변경되었다면 카운트를 증가시키고, 그 값을 출력하면 정답이 됩니다. 또한, 맨 처음 인덱스가 1이라면, 기존 카운트는 1로 초기화 해주어야 합니다.


코드

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int TC = sc.nextInt();

        for (int tc = 1; tc <= TC; tc++) {
            char[] arr = sc.next().toCharArray();
            int answer = arr[0] == '0' ? 0 : 1;

            for (int i = 1; i < arr.length; i++) {
                if (arr[i] != arr[i - 1]) answer++;
            }

            System.out.println("#" + tc + " " + answer);
        }
    }
}

카테고리:

업데이트:

댓글남기기