ALGORITHM/SWEA
[SWEA D3] 1289. 원재의 메모리 복구하기
lemon-scone
2023. 3. 29. 17:15
무작정 문제를 풀려고 할때는 지문조차 이해가 잘 가지 않았는데,
종이에 예시를 나열해보면서 문제를 다시 읽어보고 어떤식으로 짤지 고민해보고 난 후에는
문제도 이해되고 어떻게 짜야할지 조금 정리가 되었다.
https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=3&contestProbId=AV19AcoKI9sCFAZN&categoryId=AV19AcoKI9sCFAZN&categoryType=CODE&problemTitle=&orderBy=RECOMMEND_COUNT&selectCodeLang=JAVA&select-1=3&pageSize=10&pageIndex=1
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int TC = Integer.parseInt(br.readLine());
for (int tc = 1; tc <= TC; tc++) {
sb.append("#" + tc + " ");
String input = br.readLine();
int[] sample = new int[input.length()]; // 원래 상태
int[] memory = new int[input.length()]; // 초기화 상태
for (int i = 0; i < sample.length; i++) {
sample[i] = input.charAt(i) - '0';
}
int flag = 0; // 비트 변환 시작 지점
int count = 0; // 비트 변환 횟수 누적
for (int i = 0; i < sample.length; i++) {
if (sample[i] != memory[i]) { // 원래 상태와 초기화 상태가 다를 때 그 지점을 flag 변수에 저장
flag = i;
for (int j = flag; j < sample.length; j++) { // 초기화 상태 배열의 flag번째 비트부터 끝까지 sample[flag] 값 저장
memory[j] = sample[flag];
}
count++; // 비트 변환 횟수 추가
}
}
sb.append(count + "\n");
}
System.out.println(sb.toString());
}
}