백준 문제 풀이/Python

문제 2525번

pshoon25 2022. 11. 24. 11:44

 

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

 

문제 2525번을 가져왔다.

 

이 문제를 가져온 이유는 코딩의 축약에 대하여 생각을 하게 되어 가져왔다.

 

문제는 아래와 같다.

내용은 길지만 문제는 간단하다.

 

주어진 시간( A시 B분 )에 타이머 시간( C분) 을 추가하면 완료시간 ( A시 (B+C)분 )을 구하는 것이다.

 

단, 주의해야할 점은 시는 24시 단위로, 분은 60분 단위로 바뀌기 때문에 B + C의 값이 60이 넘어가면 그만큼 A에 값을 추가해 줘야한다.

 

우선 내가 작성한 코드는 아래와 같다.

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

if (B + C) // 60 >= 1 :
   if A+((B+C)//60) >= 24 :
      print(f'{(A+((B+C)//60))-24} {(B+C)-(60*((B+C)//60))}')
   else :
      print(f'{A+((B+C)//60)} {(B+C)-(60*((B+C)//60))}')
else :
   print(f'{A} {B+C}')

A, B에 정수로 시간과 분 값을 입력받고, 

C에 추가 시간을 정수로 입력받는다.

 

(B+C) // 60 >= 1

B분과 주어진 시간 C분을 합을 60으로 나누었을 때 몫이 1보다 크면 그만큼 A시에 추가가 되도록 설정하였다.

 

A+((B+C)//60) >= 24

단, A시에 시간이 추가가 될 경우 그 A의 값이 24이상일 경우 -24값을 빼주게 설정했다.

 

출력되는 값은 문제에서 주어진 출력값과 동일하였다.

 

그러나 문제를 제출하였을 경우 에러가 발생하였다.

 

나는 곰곰히 생각해봐도 틀린 부분을 찾지 못하여 구글링하여 다른 답안을 확인하였다.

 

다른 답안들과 비교해보니 내 코딩이 너무 지저분하고 복잡하다는 것을 깨달았다.

 

그래서 정답을 참고하여 내가 수정한 코드는 아래와 같다.

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

A = A + ((B+C) // 60)
B = (B+C) % 60

if A >= 24 :
    print(f'{A-24} {B}')
else : 
    print(f'{A} {B}')

A 값에 주어진 시간 B와 추가되는 시간 C의 합을 60으로 나눈 몫을 추가해 주었다.

A = A + (B + C) // 60

 

B 값에는 주어진 시간 B와 추가되는 시간 C의 합을 60으로 나눈 나머지 값으로 변경하였다.

B = (B + C) % 60

 

위처럼 값을 미리 지정하여 수식을 정리하니 훨씬 간결하고 깔끔해졌다.

 

가독성도 용이해져 나중에 다시 볼 때 한 눈에 이해하기가 쉽다.

 

🎉물론, 제출을 하였고 정답으로 나왔다🎉

 

이 문제를 품으로써 코딩을 어떻게 구성하고 간결하게 작성하는 방법 대해 한 번 더 생각하게 되었다.

'백준 문제 풀이 > Python' 카테고리의 다른 글

문제 2439번  (0) 2022.11.29
문제 2739번  (0) 2022.11.27
문제 2588번  (0) 2022.11.22
문제 10926번  (0) 2022.11.21
문제 10869번  (0) 2022.11.20