본문 바로가기

숨막히는 알고말고/문제 풀이

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

👀 문제 설명

문제

로그인해야 문제를 볼 수 있다.

 

✍🏻풀이

비트값이 달라지는 횟수를 계산하면 된다.

예를 들어, 메모리 값이 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