시뻘건 개발 도전기

[1439번] 뒤집기 본문

Business logic/백준

[1439번] 뒤집기

시뻘건볼때기 2020. 4. 12. 16:52
반응형

문제 기출 : [https://www.acmicpc.net/problem/1439]

 

 

 

풀이 방법

[그리디알고리즘] 접근

 

어쨌든 문자열은 0과 1로만 이루어져 있으므로 각각 뒤집었을 때의 count를 비교해서 크기가 작은 값이 답이 될 것이다.

 

주어진 문자열 S의 첫 문자를 첫 기준으로 잡고 S의 각 문자가 기준되는 문자와 다르면 기준에 따라 카운트.

카운트를 해줬다면 기준이 달라지기 때문에 0은 1로 바꿔주고 1은 0으로 바꿔야된다.

 

이렇게 기준점을 두고 S의 각 문자가 다르면 기준이 되는 문자의 카운트를 세어주기만 하면된다.

이러면 0일 때와 1일 때의 카운트가 각각 나오게 되는데 이 두 카운트 중에 최소값을 출력하면 된다.

 

 

 

문제 풀이

public class Main {
	public static void main(String[] args) {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int answer = 0;

		try {
			String str = br.readLine();
			
			int count_0 = 0;
			int count_1 = 0;
			char standard = str.charAt(0);
			for (int i = 0; i < str.length(); i++) {
				if(str.charAt(i) != standard) {
					if('0' == standard) {
						standard = '1';
						count_0++;
					} else {
						standard = '0';
						count_1++;
					}
				}
			}
			
			if('0' == standard) {
				count_0++;
			} else {
				count_1++;
			}
			
			answer = Math.min(count_0, count_1);
			
			System.out.println(answer);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				br.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}
반응형

'Business logic > 백준' 카테고리의 다른 글

[1931번] 회의실배정  (0) 2020.04.13
[1541번] 잃어버린 괄호  (0) 2020.04.12
[11399번] ATM  (0) 2020.04.12
[1138번] 한 줄로 서기  (0) 2020.04.12
[1120번] 문자열  (0) 2020.04.11
Comments