Softeer - 근무 시간

ejjem·2024년 11월 6일

코딩테스트

목록 보기
12/20
post-thumbnail

Softeer - 근무 시간

time = {};
result = 0;
for i in range(1, 6):
    start, end = input().split();
    time[f"{i}_start"] = start;
    time[f"{i}_end"] = end;
    
def calculate_time(start, end):
   start_hour, start_minute = map(int, start.split(":"));
   end_hour, end_minute = map(int, end.split(":"));
   return (end_hour * 60 + end_minute) - (start_hour * 60 + start_minute);

for j in range(1, 6):
    result = result + calculate_time(time[f"{j}_start"], time[f"{j}_end"]);

print(result);

풀이

문제에서 입력 형식이

10:00 19:00
09:00 15:00
10:00 11:00
11:00 22:00
09:00 15:00

형태로 주어진다고 하였으므로 input().split()으로 출근 시간과 퇴근 시간을 나눠 변수에 값을 저장할 생각은 하고 있었다. 이 방식으로 출근 시간과 퇴근 시간을 나눠 저장하면 형태가 HH:MM처럼 저장되기 때문에 이후에 다시. split(":")으로 나눠 숫자를 저장하여 계산하려고 하였다.

그러나, 모든 입력 예제가 5번(월, 화, 수, 목, 금)의 입력이 있다고 처음에는 단순하게 5번 모두 아래와 같은 형태로 입력 받아 저장하려고 하였다.

Monday_start, Monday_end = input().split();

구현은 매우 쉽겠지만, 코드의 길이를 줄여보고자 자동으로 변수를 만들어 값을 저장하는 방식을 구현해보려 하였다.

time = {};
for i in range(1, 6):
    start, end = input().split();
    time[f"{i}_start"] = start;
    time[f"{i}_end"] = end;

위와 같이 time이라는 dict을 만들고, for문을 통해 i의 값을 변화시킬 수 있다는 것을 이용하여 1_start, 1_end, 2_start, 2_end, ... 처럼 여러 변수를 자동으로 만들고 입력에 따라 값을 저장하였다.

이 후 저장한 값들을 이용하여 근무 시간을 계산하였는데, 이 역시 같은 계산 내용을 여러 번 반복해야 되기 때문에 함수를 만들어 사용하였다.

return (end_hour * 60 + end_minute) - (start_hour * 60 + start_minute);

시간을 계산하는 방법을 위와 같이 계산을 진행하였다.

for j in range(1, 6):
    result = result + calculate_time(time[f"{j}_start"], time[f"{j}_end"]);

print(result);

마지막으로, 모든 결과를 더하는 과정도 for문을 사용하여 계산하였다.

위와 같이 반복문, 함수를 사용하지 않고 단순하게 구현한다면 쉽겠지만 코드가 너무 길어질 것 같아 위와 같은 방식을 사용해보았다.

profile
개발자 지망생

0개의 댓글