백준 등 알고리즘

[백준] C# 2525 오븐 시계

박도치 2023. 11. 15. 10:13

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

 

2525번: 오븐 시계

첫째 줄에 종료되는 시각의 시와 분을 공백을 사이에 두고 출력한다. (단, 시는 0부터 23까지의 정수, 분은 0부터 59까지의 정수이다. 디지털 시계는 23시 59분에서 1분이 지나면 0시 0분이 된다.)

www.acmicpc.net

 

 

백준 2525번 오븐시계 문제이다.

 

먼저 시간 계산은 아래와 같다.

 

string input = Console.ReadLine();
string[] arr = input.Split(" ");

int A = int.Parse(arr[0]);
int B = int.Parse(arr[1]);

while(B >= 60)
{
    A++;
    B -= 60;
}

if(A >= 24)
{
    A -= 24;
}

 

A가 시간, B가 분이라고 가정하면 B에서 받은 수가 60이상이면 시계가 1시간 올라가면서 분은 다시 0으로 돌아가야 한다.

 

그 반복문이 while문이고, 시간의 경우 24시이상이 되어버리면 00시부터 다시 시작하기 때문에 if문에서 A가 24시 이상일 때 24를 도로 빼줘서 00시부터 시작하게 만들어준다.

 

기본적인 시간 계산법을 이해했다면 오븐 시간문제는 간단하다.

 

namespace Baek2525
{
    internal class Program
    {
        static void Main(string[] args)
        {
            string input = Console.ReadLine();
            string[] arr = input.Split(" ");

            int A = int.Parse(arr[0]);
            int B = int.Parse(arr[1]);
            int C = int.Parse(Console.ReadLine());

            //B에 C값을 더해줌
            B += C;

            // B가 60 이상이면 시간을 올려주고 그만큼 빼줘야 한다.
            while (B >= 60)
            {
                A++;
                B -= 60;
            }

            // 시간이 24시 넘으면 다시 00시 1시 로 돌린다.
            if (A >= 24)
            {
                A -= 24;
            }

            Console.WriteLine(A + " " + B);


            /// 시간 계산식
            //while (B >= 60)
            //{
            //    A++;
            //    B -= 60;
            //}

            //if (A >= 24)
            //{
            //    A -= 24;
            //}


        }
    }
}

 

 

오븐문제를 읽어보면 규칙에 따라 20분을 더해주고있다. 그러면 B에 미리 20을 더한 후 아래 반복문과 조건문을 들어가고 출력해주면 간단하게 해결된다.