[백준] 20310: 타노스 (자바)

Junsun Lee·2023년 10월 29일
0

PS

목록 보기
6/16
post-thumbnail

문제


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

코드


// 입력 문자열의 0과 1의 개수를 센 뒤
// 앞에서부터 0이면 절반이 될 때까지 정답에 추가
// 1이면 절반만큼 넘긴 뒤 추가

package boj.greedy;

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class S3_20310 {
    public static String str;   // 입력 문자열

    public static void main(String[] args) throws Exception {
        read();     // 입력 합수
        solution(); // 풀이 함수
    }

    // 입력 함수
    public static void read() throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        str = br.readLine();
    }

    // 풀이 함수
    public static void solution() {
        String answer = ""; // 정답 문자열
        int count0 = 0;     // 0 개수
        int count1 = 0;     // 1 개수

        // 0과 1의 개수 세기
        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) == '0') {
                count0 += 1;
            }
            else {
                count1 += 1;
            }
        }

        int add0 = 0;   // 추가한 0의 개수
        int add1 = 0;   // 넘긴 1의 개수

        for (int i = 0; i < str.length(); i++) {
            // 추가한 0의 개수가 전체 0 개수의 절반이 될 때까지 추가
            if (str.charAt(i) == '0' && add0 < count0/2) {
                answer += '0';
                add0 += 1;
            }

            if (str.charAt(i) == '1') {
                // 넘긴 1의 개수가 전체 1 개수의 절반이 될 때까지 넘김
                if (add1 < count1/2) {
                    add1 += 1;
                }
                // 절반 넘긴 이후엔 추가
                else {
                    answer += '1';
                }
            }
        }
        System.out.println(answer);
    }
}

0개의 댓글