본문 바로가기

Algorithm/Baekjoon

[백준_JAVA] 14215 세 막대

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        while (true) {
            int max = scan.nextInt();
            int mid = scan.nextInt();
            int min = scan.nextInt();

            if (max < mid) {
                int tmp = max;
                max = mid;
                mid = tmp;
            }
            if (max < min) {
                int tmp = max;
                max = min;
                min = tmp;
            }
            if (mid < min) {
                int tmp = mid;
                mid = min;
                min = tmp;
            }

            if (max <= 0 && mid <= 0 && min <= 0) {
                break;
            }
            if (max >= (mid + min)) {
                max = (mid + min) - 1;
            }

            if ((max == mid) && (mid == min)) {
                System.out.println(max + mid + min);
            } else if ((max == mid) || (mid == min) || (max == min)) {
                System.out.println(2 * mid + min);
            } else {
                System.out.println(max + mid + min);
            }
        }
    }
}

위의 코드는 잘못된 코드이다..


다음 코드가 정답이다.

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

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());

        int max = Integer.parseInt(st.nextToken());
        int mid = Integer.parseInt(st.nextToken());
        int min = Integer.parseInt(st.nextToken());

        int maxN = 0;
        if(max > mid){
            if(mid > min) maxN = max;
            else maxN = (max > min) ? max : min;
        }
        else maxN = (mid > min) ? mid : min;

        if(max + mid + min - maxN > maxN) System.out.println(max + mid + min);
        else System.out.print((max + mid + min - maxN)*2-1);

        br.close();
    }
}

 

Scanner와 BufferdReader의 차이점이 존재하는 것 같다.

속도 부분이나 입력 받는 값의 타입을 다루는 부분이 조금 다른 것 같다.

BufferReader를 공부해야겠다..