문자열 교환 1522

LJM·2023년 9월 18일
0

백준풀기

목록 보기
234/259

https://www.acmicpc.net/problem/1522

문자열 교환이라는 의미를
단순히 b 라는 글자를 a로 바꾼다는것으로 이해를 해서 문제를 해석하지 못했었다.
a와 b를 자리교체 한다는 의미였다

abababababababa 를 3번 자리교체 해주면 된다

aaaaaaabbbbbbba 이렇게 된다

문제를 어떻게 풀어야 할지 그래도 감이 오지 않아서 찾아봤다

a가 8개라면 8개를 연속되게 만들어야 한다는것이다. 그리고 원형이라는 사실을 참고한다. 원래 문자열에서 8개 연속된 부분집합을 모두 찾고 그중에서 b의 개수를 세면된다.

import java.io.*;
import java.util.*;

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

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String input = br.readLine();

        int acnt = 0;
        for (int i = 0; i < input.length(); i++) {

            if(input.charAt(i) == 'a')
                acnt++;
        }

        int left = 0;
        int change = 100000000;
        for (int i = 0; i < input.length(); i++){

            int idx = left;
            int tempchange = 0;
            for (int j = 0; j < acnt; j++) {

                if(input.charAt(idx) != 'a')
                    tempchange++;
                idx++;
                idx%=input.length();
            }
            change = Math.min(change, tempchange);

            left++;
        }
        System.out.println(change);
    }
}
profile
게임개발자 백엔드개발자

0개의 댓글