헝D의 일기장
article thumbnail

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

 

1522번: 문자열 교환

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

www.acmicpc.net

 

나의풀이

import java.io.*;
import java.util.*;
public class Main {
    public static void main(String args[]) throws Exception{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        int answer = Integer.MAX_VALUE;
        
        String temp= br.readLine();
        
        //a의 개수 구하기
        int acnt=0;
        for(int i=0; i<temp.length(); i++){
            if(temp.charAt(i) == 'a'){
                acnt++;
            }
        }
        
        //a의 개수만큼을 슬라이딩 윈도우 크기로 잡기. a가 연속이다 == a의 개수만큼 연속적으로 위치한다.
        for(int i=0;i<temp.length(); i++){
            int bcnt=0;
            for(int j=i; j< i+acnt; j++){
                if(temp.charAt(j%temp.length()) == 'b'){
                    bcnt++;
                }
            }
            answer=Math.min(answer, bcnt);

        }
        bw.write(Integer.toString(answer));
        
        bw.flush();
        br.close();
        bw.close();
        
    }
}

 

profile

헝D의 일기장

@헝D

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!