Algorithm

[BOJ]2864 5와6의 차이

Game Client Lee Hwanguk 2023. 2. 9. 12:49

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

 

2864번: 5와 6의 차이

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

www.acmicpc.net

#그리디,문자열 

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp19
{
    internal class Program
    {
        static void Main(string[] args)
        {
            StreamReader sr=new StreamReader(new BufferedStream(Console.OpenStandardInput()));
            StreamWriter sw=new StreamWriter(new BufferedStream(Console.OpenStandardOutput()));

            string []input=sr.ReadLine().Split();
            char []a = input[0].ToCharArray(); //char로 받아서 하나씩 확인해보자
            char []b= input[1].ToCharArray();
            int max=0;
            int min=0;

            //최대합 5-->6
            for (int i = 0; i < a.Length; i++)
                if (a[i] == '5')
                    a[i] = '6';
            for (int i = 0; i < b.Length; i++)
                if (b[i] == '5')
                    b[i] = '6';
            //for문으로 입력받은 문자열(string)을 int.parse로 변환후 최대값max에 할당
            max = int.Parse(new string(a)) +int.Parse(new string(b));
            //sw.Write(max);
            //최소합 6-->5
            for (int i = 0; i < a.Length; i++)
                if (a[i] == '6')
                    a[i] = '5';
            for (int i = 0; i < b.Length; i++)
                if (b[i] == '6')
                    b[i] = '5';
            min = int.Parse(new string(a)) + int.Parse(new string(b));
            //sw.Write(min);

            sw.Write("{0} {1}",max, min);


            sr.Close();
            sw.Close();
        }
    }
}

#input의 문자열을 char단위로 나누고 for문을 통해 최대값(5-->6) 최소값(6--->5) 를 구하는 문제였다

#string과 int를 char로 바꿔서 인덱스를 비교하는게 포인트였다 

#sw.Write에서 min과 max의 순서를 잘못썼다 

using System;
using System.IO;

namespace ConsoleApp19
{
    internal class Program
    {
        static void Main(string[] args)
        {
            StreamReader sr = new StreamReader(new BufferedStream(Console.OpenStandardInput()));
            StreamWriter sw = new StreamWriter(new BufferedStream(Console.OpenStandardOutput()));

            string[] input = sr.ReadLine().Split();
            char[] a = input[0].ToCharArray(); //char로 받아서 하나씩 확인해보자
            char[] b = input[1].ToCharArray();
            int max = 0;
            int min = 0;

            //최대합 5-->6
            for (int i = 0; i < a.Length; i++)
                if (a[i] == '5')
                    a[i] = '6';
            for (int i = 0; i < b.Length; i++)
                if (b[i] == '5')
                    b[i] = '6';
            //for문으로 입력받은 문자열(string)을 int.parse로 변환후 최대값max에 할당
            max = int.Parse(new string(a)) + int.Parse(new string(b));
            //sw.Write(max);
            //최소합 6-->5
            for (int i = 0; i < a.Length; i++)
                if (a[i] == '6')
                    a[i] = '5';
            for (int i = 0; i < b.Length; i++)
                if (b[i] == '6')
                    b[i] = '5';
            min = int.Parse(new string(a)) + int.Parse(new string(b));
            //sw.Write(min);

            sw.Write("{0} {1}", min, max);


            sr.Close();
            sw.Close();
        }
    }
}

#침착하게 다시 확인 후 제출해야겠다