[이코테][Java] 문자열 뒤집기

2024. 11. 12. 22:45·PS/이코테

문제 설명

다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다.

다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모두 뒤집는 것이다. 뒤집는 것은 1을 0으로, 0을 1로 바꾸는 것을 의미한다.

예를 들어 S = 0001100 일 때,

1. 전체를 뒤집으면 1110011

2. 4번째 문자부터 5번째 문자까지 뒤집으면 111111

이 되어서 두 번 만에 모두 같은 숫자로 뒤집을 수 있다.

하지만 처음부터 4번째 문자부터 5번째 문자까지 문자를 뒤집으면 0000000이 되어서 한 번 만에 모두 같은 숫자로 만들 수 있다.

문자열 S가 주어졌을 때, 다솜이가 해야 하는 행동의 최소 횟수를 출력하세요.

 

입력조건

  • 첫째 줄에 0과 1로만 이루어진 문자열 S
  • S의 길이는 100A만보다 작다.

출력조건

  • 다솜이가 해야 하는 행동의 최소 횟수 출력

입출력 예시

  • 입력예시 출력예시
    0001100 1

 

 

 

 

문제 풀이

  • 모든 문자를 0으로 만들었을 때와 모든 문자를 1로 만들었을 때를 구해서 둘 중 더 적은 횟수를 출력한다.
import java.io.*;

public class Main {

    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        String str = br.readLine();

        int count0 = 0;    //전부 0으로 바꾸는 경우
        int count1 = 0;    //전부 1로 바꾸는 경우

        //첫 번째 원소 처리
        if (str.charAt(0) == '0') {     //0 -> 1로 바뀌는 경우
            count1++;
        } else {                        //1 -> 0으로 바뀌는 경우
            count0++;

        }

        //두 번째 원소부터 확인
        for (int i = 0; i < str.length() - 1; i++) {
            //앞뒤 원소가 다를 때
            if (str.charAt(i) != str.charAt(i + 1)) {
                if (str.charAt(i + 1) == '0') { //0 -> 1로 바뀌는 경우
                    count1++;
                } else {                        //1 -> 으로 바뀌는 경우
                    count0++;
                }
            }
        }

        bw.write(Math.min(count0, count1) + "\n");
        bw.flush();
        bw.close();
    }
}

 

[참고서적]

이것이 취업을 위한 코딩 테스트다 with 파이썬 by 나동빈

저작자표시 비영리 변경금지 (새창열림)

'PS > 이코테' 카테고리의 다른 글

[이코테][Java] 럭키 스트레이트  (0) 2024.11.19
[이코테] 구현(Implementation)  (0) 2024.11.18
[이코테][Java] 곱하기 혹은 더하기  (1) 2024.11.12
[이코테][Java] 모험가 길드  (0) 2024.11.12
[이코테 ]그리디(Greedy) 알고리즘  (2) 2024.11.11
'PS/이코테' 카테고리의 다른 글
  • [이코테][Java] 럭키 스트레이트
  • [이코테] 구현(Implementation)
  • [이코테][Java] 곱하기 혹은 더하기
  • [이코테][Java] 모험가 길드
nyrimmm
nyrimmm
  • nyrimmm
    개발기록
    nyrimmm
  • 전체
    오늘
    어제
  • 글쓰기 관리
    • 분류 전체보기 (85) N
      • Java (6)
      • Spring & SpringBoot (3)
      • Network (1)
      • DataBase (0)
      • SQL (1)
      • IntelliJ (3)
      • Git (0)
      • 자료구조 & 알고리즘 (2)
      • 트러블 슈팅 (1)
        • Spring (1)
      • PS (67) N
        • 백준 (24)
        • 프로그래머스 (0)
        • SQL (10) N
        • 이코테 (33)
      • 후기 & 회고 (1)
  • 태그

  • 인기 글

  • 최근 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
nyrimmm
[이코테][Java] 문자열 뒤집기
상단으로

티스토리툴바