728x90
원재씨가 실수로 메모리를 초기화했다.
다행이 원래 메모리가 무슨 값이였는지 알고있다고한다.
하지만 문제가 bit 중 하나를 골라 0, 1인지 결정하면 해당 값이 메모리의 끝까지 덮어씌우는 것이다.
ex)
0 | 1 | 0 | 0 |
^ 이 3번재 bit를 골라 1로 설정하면
0 | 1 | 1 | 1 |
이렇게 그자리부터 1로 덮어씌워지는 것.
그렇다면 원래상태가 주어 질때 초기화 상태에서 원래 상태로 돌아가는데 최소 몇 번이나 고쳐야 하는지 계산해보아라.
ex) 값이 주어진다.
? | ? | ? | ? |
이 값이 아래로 초기화 - (1)
0 | 0 | 0 | 0 |
그리고 원래 상태로 - (2)
기 | 본 | 상 | 태 |
문제 풀이
기본 - tc 값
1. 값을 주어줄 필요없이 메모리의 길이가 들어갈 배열을 만들어준다.
2. 0000에서 > 입력값으로 변겅하기
3. 1을 검색하고 바꾸고 0을 검색하고 바꾸고를 메모리 길이가 들어갈 배열을 반복 수행
소스코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Solution{
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int T = Integer.parseInt(br.readLine()); // Tc 받아주기
int cnt;
char point;
for(int tc = 1; tc <= T; tc++) {
String s = br.readLine(); // 현재 값 받기
point = '0'; // 초기화 시켜줄 값
cnt = 0;//초기화 > 원래값 변경하는 횟수
for(int i = 0; i < s.length(); i++) {
if(point != s.charAt(i)) {//s의 i번째 문자가 point 값이 아니라면
cnt++; // cnt 회수 추가
point = s.charAt(i); // s의 i번째 문자를 point으로 값을 줍니다.
}
}
sb.append("#"+tc+ " "+ cnt+ "\n");
}
sb.setLength(sb.length()-1); //sb 길이를 sb길이의 -1 만큼 설정!
System.out.println(sb);
}
}
|
cs |
728x90
'알고리즘 > SWAE' 카테고리의 다른 글
[SWAE-Python] 6485. 삼성시의 버스노선, 1959. 두개의 숫자열 (2) | 2021.02.15 |
---|---|
[SWAE] Python 4828 - minmax (버블정렬) (0) | 2021.02.10 |
[SWAE] Python 4828 - minmax 값구하깅 (0) | 2021.02.09 |
[SWAE- Python] 3834 숫자 카드 문제 (0) | 2021.02.09 |
[SW Expert] (D2) JAVA - 숫자 달팽이 그리기 (0) | 2021.02.02 |