카테고리 없음
[BOJ_1439/JAVA] 뒤집기
Eun
2022. 1. 23. 13:53
풀이
0을 뒤집는 경우와 1을 뒤집는 경우 두가지를 비교해서 더 적은 수를 출력하도록 하였다.
처음에 배열의 0번째 값을 가져와서 a에 저장하고, 계속해서 뒤에 숫자와 비교를 한다.
숫자가 같으면 넘어가고 숫자가 다르면 num[i]가 0이면 zero++, 1이면 one++ 를 해주고 a에 num[i]를 넣어준다.
for문을 다 돌고나면 배열의 마지막 숫자는 비교하지 못하고 끝이난다.
마지막 숫자도 마찬가지로 1인지 0인지 판단하여 ++을 해준다.
코드
package Week08;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class NDB_문자열뒤집기 {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
int num[]=new int[s.length()];
for(int i=0;i<s.length();i++) {
num[i]=s.charAt(i)-'0';
}
int one=0;
int zero=0;
int a = num[0]; // 배열의 첫번째 인덱스값 저장
for(int i=1;i<num.length;i++) {
if(num[i]!= a) { // a와 다른 경우
if(a==0) {
zero++; // 0이면 ++
a=num[i]; // a를 0으로 갱신해준다.
}else {
one++; // 1이면 ++
a=num[i]; // a를 1으로 갱신해준다.
}
}
}
// 마지막 배열은 비교못하고 끝나므로 한번 더 체크해준다.
if(a==0) zero++;
else one++;
// 0이 연속한 개수와 1이 연속한 개수 중 최솟값 출력
System.out.println(Math.min(zero, one));
}
}