알고리즘 문제들 으악/백준

[python]2525번 풀면서 계속 저지르던 실수

빈나 2022. 3. 12. 15:18
반응형

문제풀면서 가장 열받게 만드는 요인은 맞왜틀 시전하면서 틀린 요인을 못 찾을 때이다.

코린이로서 오븐 시계 풀면서 저질렀던 실수는 정수처리에 있었다. 

 

a,b = map(int,input().split(" "))
c = int(input())

if c>=60:
    d = c/60   #### 시간 더하기
    e = c%60   #### 분 더하기
    a += d
    b += e
    if b >= 60:
        f = b%60
        g = b/60
        a += g
        b = f
    if a >= 24:
            a = a%24

print(int(a),int(b))

 

위에는 내가 짜낸 코드이다.

물론 if c>=60: 부분은 필요가 없는 부분인데 역시 신생 코린이 답다

아무튼 머리속으로는 대충 알맞은거 같았으나

계속 틀렸던 이유는 정수 처리를 마지막 print()에서 대충 처리해서 틀렸다.

 

위에 반례는 

22 30

119

를 치면서 반례를 찾았다. 보통이라면은 0 29가 나와야하지만 1 29가 나와서 문제점을 찾았다.

g 부분을 60으로 나누면 119는 나눠떨어지지 않고 소수점으로 계속 이어간다. 거기다가 또 b를 60으로 나눠서 소수점 끼리 더하면 소수점이 올림처리해가지고 정수가 1이 더 늘어나게 되었다.

 

결국 최종본은 아래와 같이 수정했다

a,b = map(int,input().split(" "))
c = int(input())

b +=c
if b >= 60:
        f = b%60
        g = int(b/60)
        a += g
        b = f
if a >= 24:
        a = a%24

print(a,b)

 

간단한 문제에서도 괜히 어렵게 생각하다가 코드도 길어지고 난잡해졌다. 해결해서 다행이다

더 보완할 점이 있다면 언제든 얘기 해 주시면 감사하겠습니다.

반응형