기록하는 개발자

[백준 2863번] 5와 6의 차이 - JAVA 알고리즘 본문

Baekjoon Online Judge

[백준 2863번] 5와 6의 차이 - JAVA 알고리즘

gitseok 2022. 4. 1. 11:47

2863번
문제
상근이는 2863번에서 표를 너무 열심히 돌린 나머지 5와 6을 헷갈리기 시작했다.
상근이가 숫자 5를 볼 때, 5로 볼 때도 있지만, 6으로 잘못 볼 수도 있고, 6을 볼 때는, 6으로 볼 때도 있지만, 5로 잘못 볼 수도 있다.
두 수 A와 B가 주어졌을 때, 상근이는 이 두 수를 더하려고 한다. 이때, 상근이가 구할 수 있는 두 수의 가능한 합 중, 최솟값과 최댓값을 구해 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 두 정수 A와 B가 주어진다. (1 <= A,B <= 1,000,000)
출력
첫째 줄에 상근이가 구할 수 있는 두 수의 합 중 최솟값과 최댓값을 출력한다.
예제 입력 예제 출력
   
1430 4862 6282 6292
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;

public class Main {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // 선언
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); // 선언
		
		
		StringTokenizer st = new StringTokenizer(br.readLine());
		String num1 = st.nextToken();
		String num1Min="";
		String num1Max="";
		
		String num2 = st.nextToken();
		String num2Min="";
		String num2Max="";
		
		int max,min;
		
		for(int i=0; i<num1.length(); i++) { //첫번째 수 최대/최소값 생성
			if(num1.charAt(i) == '5'||num1.charAt(i) == '6') {
				num1Min = num1Min+"5";
				num1Max = num1Max+"6"; 
			}else {
				num1Min = num1Min+num1.charAt(i);
				num1Max = num1Max+num1.charAt(i); 
			}
		}
		
		for(int i=0; i<num2.length(); i++) { //두번째 수 최대/최소값 생성
			if(num2.charAt(i) == '5'||num2.charAt(i) == '6') {
				num2Min = num2Min+"5";
				num2Max = num2Max+"6"; 
			}else {
				num2Min = num2Min+num2.charAt(i);
				num2Max = num2Max+num2.charAt(i); 
			}
		}
		min = Integer.parseInt(num1Min)+Integer.parseInt(num2Min);
		max = Integer.parseInt(num1Max)+Integer.parseInt(num2Max);
		
		bw.write(min+" "+max);
		bw.close();
		br.close();
	}
}

실행 결과
실행 결과2

개인적으로 정리한 내용을 간단하게 풀어 작성했습니다.
이해가 안가는 부분은 댓글 남겨주시면 설명해드리겠습니다.
Comments