알고리즘/9oormthon Challenge

[구름톤 챌린지 #2] 프로젝트 매니징

young_and_mini 2023. 8. 16. 00:45

문제 2. 프로젝트 매니징

 

구름LEVEL

난이도별 다양한 문제를 해결함으로써 SW 역량을 향상시킬 수 있습니다.

level.goorm.io



문제해결방법

우선 문제를 간단하게 분석하며 주의할 점을 체크하면 아래와 같다.

  • N: 입력받을 Ci의 개수
  • T(시): 0 ~ 23 시 (12시간 단위가 아닌 24시간 단위를 사용)
  • M(분): 0 ~ 59 분
  • Ci(소요된 시간): 소요된 시간을 분 단위로 표현

 

24 시간 단위라는 것만 체크한다면, 어려운 부분은 딱히 없다.

기능을 전부 개발한 최종 시각 만을 구하면 되고, 중간 과정에서의 시각은 관심이 없으므로, 입력 받은 현재 분(m)을 유지할 필요가 없다. 그러므로 현재 분(m)에 n번만큼 입력받는 Ci(소요된 시간)를 전부 더해줘도 괜찮다.

 

이때, m(분)은 59 를 초과했을 가능성이 있다. 60 분당 1 시간으로 변환되어 현재 시각의 시(h)에 반영되어야 한다. m(분)을 60으로 나눠서 얻은 몫 만큼 h(시)에 더해주고, 나머지는 m(분)에 그대로 남겨두면 된다.

 

이렇게 되면, 이번에는 h(시)가 23을 초과했을 가능성이 생긴다. 24 시간당 1 일로 변환되어야 하지만, 이 문제에서는 일을 표현하지 않으므로 h(시)만 신경쓰면 된다. h(시)를 24로 나눈 나머지만을 h(시)에 남기도록 하자.

 

위 과정을 코드로 변환하면 아래와 같다.

import sys

n = int(sys.stdin.readline())
h,m = map(int, sys.stdin.readline().split())

for i in range(n):
	m += int(sys.stdin.readline())

h += m//60
m %= 60
h %= 24

print(h, m)