Step by Security Study

[백준-2525번] 오븐 시계 - 파이썬 본문

문제 풀이/백준

[백준-2525번] 오븐 시계 - 파이썬

jooon99 2023. 5. 31. 03:39

문제 링크

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

 

2525번: 오븐 시계

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

www.acmicpc.net

 

 

 

 

문제 풀이 과정

처음에 아래 코드가 답이라고 생각했다. 왜냐하면 예제 입/출력 결과와 동일하게 나왔기 때문이다. 하지만 제출 시 계속 '틀렸습니다'라는 결과를 받아 게시판에 문의 글을 올렸다. 아래와 같이 반례가 있었다.

A, B = map(int, input().split());
C = int(input());

if 0 <= A <= 23 and 0<= B <= 59 and 0<= C <= 1000:
    if B+C < 60:
        if ((B+C)//60)+A >= 24:
            print((((B + C)//60)+A)-24, B + C, sep=" ");
        else:
            print(A, B+C, sep=" ");
    elif (B+C)%60 == 0:
        if A >= 23:
            print((((B + C)//60)+A)-24, 0, sep=" ");
        else:
            print(((B+C)//60)+A, 0, sep=" ");
    elif B+C > 60:
        if A >= 23:
            print((((B + C)//60)+A)-24, (B+C)%60, sep=" ");
        else:
            print(((B+C)//60)+A, (B+C)%60, sep=" ");
입력
22 30
90
출력 
24 0

 

코드를 수정하여 반례를 해결하여 다시 제출했지만 여전히 답이 아니었다. 도대체 뭐가 문제인 것일까?...

 

 

 

 

최종 코드

A, B = map(int, input().split());
C = int(input());

if 0 <= A <= 23 and 0<= B <= 59 and 0<= C <= 1000:
    if B+C < 60:
        print(A, B+C, sep=" ");
    elif (B+C)%60 == 0:
        if (((B + C)//60)+A) >= 24:
            print((((B + C)//60)+A)-24, 0, sep=" ");
        else:
            print((((B + C)//60)+A), 0, sep=" ");
    elif B+C > 60:
        if (((B + C)//60)+A) >= 24:
            print((((B + C)//60)+A)-24, (B+C)%60, sep=" ");
        else:
            print(((B+C)//60)+A, (B+C)%60, sep=" ");

엄청난 시도였다...

 

 

 

 

힘들었던 점

첫 번째, 문제를 이해하는데 시간이 오래 걸렸다. 문해력이 많이 떨어지나 보다..
두 번째, 문제를 아무리 풀어봐도 답이 나오지 않았다.. 그래서 하루 종일 문제만 풀기보다는 하루에 시간을 정해서 그 시간 안에 못 풀면 다음날로 넘겼다. 내 목표는 개발자가 아닌 파이썬을 익숙하게 만드는 것이기 때문이다.

마지막으로 내 코드는 너무 복잡하다... 다른 사람이 올린 답을 보면 깔끔하게 되어 있던데 ㅜㅠ

그래도 나는 문제를 풀었다는데 의의를 둘 것이다. 정신 승리 ㅋㅋㅋㅋ