본문 바로가기
백준

[백준] 2864번 : 5와 6의 차이 – JAVA [자바]

by Hongwoo 2022. 8. 10.
반응형

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

 

2864번: 5와 6의 차이

첫째 줄에 두 정수 A와 B가 주어진다. (1 <= A,B <= 1,000,000)

www.acmicpc.net

 


  • 문제

 

 


  • 문제 풀이

백준 2864번 5와 6의 차이는 브론즈 2 난이도의 수학 및 그리디 문제이다. 이 문제에서 등장하는 상근이는 숫자 5를 볼 때, 5로 볼 때도 있지만, 6으로 잘못 볼 수도 있고, 6을 볼 때는, 6으로 볼 때도 있지만, 5로 잘못 볼 수도 있다. 그리고 숫자 A와 B가 주어진다. 이때 상근이가 구할 수 있는 두 수의 합 중 최솟값과 최댓값을 출력하면 된다. 

 

이 문제를 풀려면 우선 A와 B를 minA, maxA, minB, maxB로 나눌 것이다. minA는 A에서 등장하는 모든 6을 5로 바꾼 A이고, maxA는 A에서 등장하는 모든 5를 6으로 바꾼 A이다. minB와 maxB도 마찬가지로 해준다. 그러면 최솟값은 minA + minB가 되고 최댓값은 maxA + maxB가 된다.

 

자세한 코드는 밑에 있는 코드를 참고하면 되겠다.

 


  • 코드

 

import java.io.*;
import java.util.*;

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());
        String a = st.nextToken();
        String b = st.nextToken();
        String maxA = "";
        String maxB = "";
        String minA = "";
        String minB = "";
        for (int i = 0; i < a.length(); i++) {
            if (a.charAt(i) == '5' || a.charAt(i) == '6') {
                minA += "5";
                maxA += "6";
            } else {
                minA += a.charAt(i);
                maxA += a.charAt(i);
            }
        }
        for (int i = 0; i < b.length(); i++) {
            if (b.charAt(i) == '5' || b.charAt(i) == '6') {
                minB += "5";
                maxB += "6";
            } else {
                minB += b.charAt(i);
                maxB += b.charAt(i);
            }
        }
        int min = Integer.parseInt(minA) + Integer.parseInt(minB);
        int max = Integer.parseInt(maxA) + Integer.parseInt(maxB);
        System.out.print(min + " " + max);
    }
}

 

 

반응형

댓글