Algorithm/BOJ

[BOJ]10162 전자레인지

Game Client Lee Hwanguk 2023. 2. 5. 15:03

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

 

10162번: 전자레인지

3개의 시간조절용 버튼 A B C가 달린 전자레인지가 있다. 각 버튼마다 일정한 시간이 지정되어 있어 해당 버튼을 한번 누를 때마다 그 시간이 동작시간에 더해진다. 버튼 A, B, C에 지정된 시간은

www.acmicpc.net

#브루투포스처럼 완전탐색이지만 그 중에서 최적의 답을 찾으라는건 그리디를 이용하라는 말이었다

#그리디

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

namespace ConsoleApp18
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //[BOJ]10162 그리디알고리즘
            StreamReader sr = new StreamReader(new BufferedStream(Console.OpenStandardInput()));
            StreamWriter sw = new StreamWriter(new BufferedStream(Console.OpenStandardOutput()));

            int[] arr = new int[3]; //[0]300,[1]60,[2]10 
            int T=int.Parse(sr.ReadLine());

            bool fail=false;
            while(T>0)
            {
                if (T>=300) //300이상?
                {
                    T -= 300;
                    arr[0]++; 
                }
                else if(T<300&&T>=60) //300보다작고 60이상?
                {
                    T -= 60;
                    arr[1]++;   
                }
                else if(T<60&&T>=10) //50보다 작고 10이상?
                {
                    T -= 10;
                    arr[2]++;
                }
                //3가지 경우로 T를 맞출수없다면? false
                else
                {
                    fail = true;
                    break;
                }
            }

            if(!fail)
            {
                for(int i=0; i<arr.Length; i++)
                {
                    sw.Write("{0} ",arr[i]);
                }
            }
            else
            {
                sw.Write(-1);
            }
            
            sr.Close();
            sw.Close();
        }
    }
}

 

#신난다