코딩테스트 (C#)

백준 2525 : 오븐 시계 - C# 풀이

UniCoti-sub 2024. 8. 17.
반응형

문제 사진

문제는 이전 문제와 비슷한데, 좀 더 발전된 형태이다.

 

https://unicoti-sub.tistory.com/23 (유사 문제)

 

Baekjoon No. 2884(알람 시계) - C# 풀이.

문제는 이렇다.시(hour)와 분(minute)이 입력값으로 주어지는데,45분 전의 시간을 출력하면 정답인 문제이다. 여기서 문제는 만약에 현재가 3시 20분이라면 45분 전으로 가기 위해서2시로 돌아가야

unicoti-sub.tistory.com

 

첫번째 줄에서 입력값으로 현재 시간이 주어진다. ex) 10 10 -> 10시 10분

이후 두번째 줄에서 시간 간격이 나오게 된다.

현재 시간에서 시간 간격을 더해서 표현하면 된다.

 

예를들어,

10 10

20

이런 입력값이 있다면, 10시 10분에서 20 이후를 출력하라는 의미로,

10 30이 출력되면 성공이다.

 

주의해야할 건 분이 60을 넘으면 1시간으로 추가하는 것과

24시간을 넘으면 다시 1시로 돌아오는 등의 형식 문제이다.

이걸 고려해서 코드를 만들어보자.

 

using System;

namespace unicoti {
    class Program {
        
        static void Main(string[] args) {
            int h,m;
            int time;
            string[] input = (Console.ReadLine() ?? "0 0").Split(' ');
            int.TryParse(input[0], out h);
            int.TryParse(input[1], out m);
            int.TryParse(Console.ReadLine(), out time);

            int c = UpScale(m + time);
            m = time + m - c*60;
            h += c;

            if(h >= 24) {
                h -= 24;
            }
            
            Console.WriteLine($"{h} {m}");
        }

        static int UpScale(int min) {
            int count = int.Parse(MathF.Floor(min/60f).ToString());
            return count;
        }
    }
}

 

일단 h와 m으로 첫번째 줄 입력값을 받아왔고,

시간 간격은 time을 변수로 받아왔다.

 

이후 UpScale이라는 함수를 만들어서 분이 몇시간인지 세주었다.

ex) 130 -> 2시간 10분 (count = 2)

 

그걸 c라는 변수에 저장하고, m을 계산할 수 있었고

h또한 c로 계산할 수 있었다.

 

그래서 if문은 하나로 해결할 수 있었고, 그건 예외처리 용도로 사용했다.

마지막으로 출력을 통해서 문제 풀이를 끝냈다.


오늘의 느낀점)

일단 오늘은 새로 알게 된 메소드나 함수는 없다.

회고할 점이 있다면 어차피 함수를 한번만 써서 굳이

함수로 만들었어야 싶기도 하다.

 

좋았던 점은 h, m, time , c라는 4개의 함수를 만들어서

이 문제를 if문 1개로 해결했다는 점이다.

변수 4개의 복잡도와 if문 여러개의 복잡도를 따져보고 싶다.


이상으로 도움이 되었길 바라며,

 

끝.

반응형

댓글