Algorithm
[Algorithm/Java][BOJ] 1439번 뒤집기
kkmin223
2022. 1. 16. 14:56
반응형
[BOJ] 1439번 뒤집기
https://www.acmicpc.net/problem/1439
문제접근
0이 같이 있는 그룹과 1이 같이 있는 그룹이 몇 그룹인지 세면 된다고 생각해서 처음에는 0에서 1로 바뀌는 부분에서 cnt에 +1을 해준다고 생각했다. 이렇게 하면 모든 그룹을 다 세기 때문에 오답이 되었다. 그래서 zeroGroup과 oneGroup을 이용해서 각자 따로따로 하나씩 세서 더 작은 값을 출력해 주었다. 하지만 마지막 부분에 있는 그룹은 처음 로직으로는 카운트가 안되서 for문 마지막일 때 현재 cur값의 group에 +1을 해주었다.
Code
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();
char prev = input.charAt(0);
int zeroGruop = 0, oneGroup = 0; // 각각 그룹을 나누어 카운팅
for(int i=1; i<input.length(); i++){
char cur = input.charAt(i);
if(prev != cur){
// 현재 값과 이전 값이 다르면 이전 값의 그룹의 +1
if(prev == '0')
zeroGruop++;
else
oneGroup++;
}
if(i==input.length()-1){
// 마지막 인덱스에 속한 그룹도 +1을 해주기 위해서 추가
if(cur == '0')
zeroGruop++;
else
oneGroup++;
}
prev = cur;
}
// 두 그룹 중 최소값을 가진 그룹 출력
System.out.println(Math.min(zeroGruop, oneGroup));
}
}
어려웠던 점/ 배운 점
이제 자바 문법에 익숙해져서 어떤 라이브러리를 써야할 지 느낌이 오고 String에 있는 메소드도 적응이 된 것 같다.
BOJ는 프로그래머스나 LeetCode 처럼 좋아요를 많이 받은 코드를 따로 볼 수 없는 것 같아서 다른 사람들이 어떻게 풀었을지 궁금하다.
반응형