👀 문제 설명
로그인해야 문제를 볼 수 있다.
✍🏻풀이
비트값이 달라지는 횟수를 계산하면 된다.
예를 들어, 메모리 값이 110001110 일 때,
초기값이 000000000이므로, before에는 0을 저장해두고, 메모리 값의 처음부터 접근한다.
110001110 밑줄 친 부분이 count에 +1을 하는 부분이다.
000000000 -> 111111111 -> 110000000 -> 110001111 -> 110001110
이런 식으로 바뀐다.
코드
package swea;
// 원재의 메모리 복구하기(https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV19AcoKI9sCFAZN&categoryId=AV19AcoKI9sCFAZN&categoryType=CODE&problemTitle=1289&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1)
import java.io.*;
public class SWEA_1289 {
private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
private static int T;
private static String memory;
public static void main(String[] args) throws Exception {
// input
T = Integer.parseInt(br.readLine());
for (int test_case = 1; test_case <= T; test_case++) {
// solve
memory = br.readLine();
int before = 0;
int count = 0;
for (int i = 0; i < memory.length(); i++) {
int cur = memory.charAt(i) - '0';
if (cur != before) {
before = cur;
count++;
}
}
System.out.println("#" + test_case + " " + count);
}
}
}
'숨막히는 알고말고 > 문제 풀이' 카테고리의 다른 글
[SWEA] 달팽이 숫자 (0) | 2021.08.03 |
---|---|
[Baekjoon] 스위치 켜고 끄기 (0) | 2021.08.03 |
[Baekjoon] 스타트와 링크 (0) | 2021.08.01 |
[Baekjoon] 퇴사 (2) | 2021.08.01 |
[SWEA] 구구단2 (0) | 2021.07.29 |