Algorithm/문제 풀이 / / 2022. 12. 7. 01:16

[BAEKJOON_17615 - JAVA] 볼 모으기

반응형

문제

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

 

17615번: 볼 모으기

첫 번째 줄에는 볼의 총 개수 N이 주어진다. (1 ≤ N ≤ 500,000) 다음 줄에는 볼의 색깔을 나타내는 문자 R(빨간색 볼) 또는 B(파란색 볼)가 공백 없이 주어진다. 문자열에는 R 또는 B 중 한 종류만 주

www.acmicpc.net

 

JAVA 코드

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

public class Main {
    private static int N;

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        N = Integer.parseInt(br.readLine());
        char[] balls = br.readLine().toCharArray();
        int red = 0;
        int blue = 0;
        for (int idx = 0; idx < N; idx++) {
            if (balls[idx] == 'R')
                red++;
            else
                blue++;
        }

        int result = Integer.MAX_VALUE;

        // left 'R'
        int idx = 0;
        int cnt = 0;
        while (isValid(idx) && balls[idx++] == 'R') {
            cnt++;
        }
        result = Math.min(result, red - cnt);

        // right 'R'
        idx = N - 1;
        cnt = 0;
        while (isValid(idx) && balls[idx--] == 'R') {
            cnt++;
        }
        result = Math.min(result, red - cnt);

        // left 'B'
        idx = 0;
        cnt = 0;
        while (isValid(idx) && balls[idx++] == 'B') {
            cnt++;
        }
        result = Math.min(result, blue - cnt);

        // right 'B'
        idx = N - 1;
        cnt = 0;
        while (isValid(idx) && balls[idx--] == 'B') {
            cnt++;
        }
        result = Math.min(result, blue - cnt);

        bw.write(String.valueOf(result));
        br.close();
        bw.flush();
        bw.close();

    }

    public static boolean isValid(int idx) {
        if (idx >= N || idx < 0) {
            return false;
        }
        return true;
    }

}
반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유