© 2025 anveloper.dev
GitHub·LinkedIn·Contact

목차

  • 문제
  • 입력
  • 출력
  • 예제
  • 풀이
  • 코드
  • 복잡도
풀이 목록으로 돌아가기

BOJ 2864 - 5와 6의 차이

2023-09-30
BOJ
브론즈 II
java
원본 문제 보기
수학
그리디 알고리즘
문자열
사칙연산

문제

BOJ 2864 - 5와 6의 차이

두 수 A, B가 주어지는데 5와 6이 혼동될 수 있다. A+B의 가능한 최솟값과 최댓값을 구하라.

입력

A와 B가 주어진다.

출력

A+B의 최솟값과 최댓값을 공백으로 구분하여 출력한다.

예제

입력출력
11 2536 37

풀이

5와 6을 모두 5로 바꾸면 최솟값, 모두 6으로 바꾸면 최댓값이 된다.

  1. 각 수에서 5와 6을 모두 5로 바꾼 버전(최소)을 만든다
  2. 각 수에서 5와 6을 모두 6으로 바꾼 버전(최대)을 만든다
  3. 최소 버전끼리의 합과 최대 버전끼리의 합을 출력한다

핵심 아이디어: 합을 최소화하려면 모든 혼동 가능한 숫자를 작은 값(5)으로, 최대화하려면 큰 값(6)으로 바꾸면 된다.

코드

package day649;
 
import java.io.*;
import java.util.*;
 
public class Day603BOJ2864a5와6사이 {
  public static void main(String[] args) throws Exception {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    StringTokenizer st = new StringTokenizer(br.readLine());
    String a = st.nextToken();
    String b = st.nextToken();
 
    String a1 = "";
    String a2 = "";
 
    for (int i = 0; i < a.length(); i++) {
      if (a.charAt(i) == '5' || a.charAt(i) == '6') {
        a1 += "5";
        a2 += "6";
      } else {
        a1 += a.charAt(i);
        a2 += a.charAt(i);
      }
    }
 
    String b1 = "";
    String b2 = "";
 
    for (int i = 0; i < b.length(); i++) {
      if (b.charAt(i) == '5' || b.charAt(i) == '6') {
        b1 += "5";
        b2 += "6";
      } else {
        b1 += b.charAt(i);
        b2 += b.charAt(i);
      }
    }
    System.out
        .println((Integer.parseInt(a1) + Integer.parseInt(b1)) + " " + (Integer.parseInt(a2) + Integer.parseInt(b2)));
  }
}

복잡도

  • 시간: O(L) - L은 자릿수
  • 공간: O(L)