[알고리즘] Java / 백준 / 볼 모으기 / 17615

정현명·2022년 3월 20일
0

baekjoon

목록 보기
102/180
post-thumbnail

[알고리즘] Java / 백준 / 볼 모으기 / 17615

문제


문제 링크



접근 방식


왼쪽 혹은 오른쪽으로 파란 공, 빨간 공을 모을 4가지 경우의 수를 모두 구한다

예를 들어 왼쪽으로 파란 공을 모을 경우 가장 왼쪽부터 하나씩 검사하여 처음으로 빨간 공이 나왔을 때 이후 부터 파란 공을 센다



코드


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

public class Main_17615 {
	
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int N = Integer.parseInt(br.readLine());
		String balls = br.readLine();
		int cnt = Integer.MAX_VALUE;
		
		
		// 왼쪽으로 빨간 공 모으기
		
		int subCnt = 0;
		boolean sw = false;
		for(int i=0;i<N;i++) {
			if(sw && balls.charAt(i) == 'R') {
				subCnt++;
				continue;
			}
			
			if(balls.charAt(i) == 'B') sw = true;
		}
		cnt = Math.min(cnt, subCnt);
		
		// 왼쪽으로 파란 공 모으기
		
		subCnt = 0;
		sw = false;
		for(int i=0;i<N;i++) {
			if(sw && balls.charAt(i) == 'B') {
				subCnt++;
				continue;
			}

			if(balls.charAt(i) == 'R') sw = true;
		}
		cnt = Math.min(cnt, subCnt);
		
		
		// 오른쪽으로 빨간 공 모으기
		
		subCnt = 0;
		sw = false;
		for(int i=N-1;i>=0;i--) {
			if(sw && balls.charAt(i) == 'R') {
				subCnt++;
				continue;
			}

			if(balls.charAt(i) == 'B') sw = true;
		}
		cnt = Math.min(cnt, subCnt);
		
		// 오른쪽으로 파란 공 모으기
		
		subCnt = 0;
		sw = false;
		for(int i=N-1;i>=0;i--) {
			if(sw && balls.charAt(i) == 'B') {
				subCnt++;
				continue;
			}
			
			if(balls.charAt(i) == 'R') sw = true;
		}
		
		cnt = Math.min(cnt, subCnt);
		
		
		System.out.println(cnt);
		
		
	}
}
profile
꾸준함, 책임감

0개의 댓글