본문 바로가기
Problem Solving/Baekjoon

[백준] 1522 문자열 교환 - Brute Force / Java

by graycode 2024. 1. 25.

 문제 링크

 

1522번: 문자열 교환

a와 b로만 이루어진 문자열이 주어질 때,  a를 모두 연속으로 만들기 위해서 필요한 교환의 회수를 최소로 하는 프로그램을 작성하시오. 이 문자열은 원형이기 때문에, 처음과 끝은 서로 인접해

www.acmicpc.net

 

 풀이 코드

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

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 s = br.readLine();

        int range = 0;
        for (int i = 0; i < s.length(); i++) if (s.charAt(i) == 'a') range++;

        int min = 1000;
        for (int i = 0; i < s.length(); i++, range++) {
            int cnt = 0;
            for (int j = i; j < range; j++) if (s.charAt(j % s.length()) == 'b') cnt++;

            min = Math.min(min, cnt);
        }

        bw.write(String.valueOf(min));
        bw.flush();
    }

}

댓글