사용 언어 : JAVA
문제 : https://softeer.ai/practice/6254https://school.programmers.co.kr/learn/courses/30/lessons/12951
레벨 : 1
✅ 문제 요약
- 출근시간과 퇴근시간 사이의 일한 시간을 계산
- 일한 시간은 “분” 단위로 계산
✅ 문제 설명
당신은 인사팀 직원으로, 각 직원의 근태를 확인하고자 한다.
당신의 회사는 자율출퇴근제를 실시하기 때문에 각 직원이 정확히 몇 시에 출근하는 것은 중요하지 않고, 총 근로 시간이 몇 분인지가 중요하다. 총 근로 시간이 법정근로시간을 초과하지 않아야 하면서, 회사와 직원 사이에 계약한 시간 이상이어야 하기 때문이다.
직원이 하루 동안 근무한 시간은 출근 시각과 퇴근 시각 사이의 시간으로 정의한다. 이 문제에서는 식사 시간 등 근무 외 시간을 근무 시간에서 제외하지 않음에 유의하라.
월요일부터 금요일까지 휴가를 쓰지 않은 직원이 매 요일 언제 출근하고 언제 퇴근했는지가 주어질 때, 이 직원이 5일 동안 총 몇 분을 근무했는지를 구하는 프로그램을 작성하라.
직원은 밤을 새서 일하지 않았다. 즉, 출근 시각과 퇴근 시각은 00:00 이후, 24:00 이전에 이루어졌다.
출퇴근 시각은 HH:MM과 같은 형식으로 주어진다.
HH는 00, 01, 02, .., 22, 23 중 하나이다.
MM는 00, 01, 02, .., 58, 59 중 하나이다.
직원은 매일 1분 이상은 일하였다.
첫 번째 줄에는 월요일에 출근한 시각과 월요일에 퇴근한 시각이 공백 하나를 사이로 두고 주어진다.
두 번째 줄에는 화요일에 출근한 시각과 화요일에 퇴근한 시각이 공백 하나를 사이로 두고 주어진다.
세 번째 줄에는 수요일에 출근한 시각과 수요일에 퇴근한 시각이 공백 하나를 사이로 두고 주어진다.
네 번째 줄에는 목요일에 출근한 시각과 목요일에 퇴근한 시각이 공백 하나를 사이로 두고 주어진다.
다섯 번째 줄에는 금요일에 출근한 시각과 금요일에 퇴근한 시각이 공백 하나를 사이로 두고 주어진다.
첫 번째 줄에 직원의 총 근무 시간을 분 단위로 출력한다.
예제 입력
09:17 19:24
10:11 18:45
09:34 18:27
10:47 15:33
08:47 18:32
예제 출력
2525
✅ 핵심 아이디어/알고리즘
- 출근, 퇴근 시간의 시간,분을 subString을 통해 자른다(형식이 동일하기 때문에 가능)
- 분 계산을 위해 출,퇴근 시간에 *60을 곱하고 분이랑 더 해준다.
- 계산 된 퇴근시간(분단위) - 출근시간(분단위) 하고 차이를 sum 해준다.
✅ 직접 구현한 코드 (JAVA)
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int sum = 0;
for(int i=0; i<5; i++){
String str = sc.nextLine();
int firstHour = Integer.parseInt(str.substring(0,2));
int firstTime = Integer.parseInt(str.substring(3,5));
int secondHour = Integer.parseInt(str.substring(6,8));
int secondTime = Integer.parseInt(str.substring(9));
int start = firstHour * 60 + firstTime;
int end = secondHour * 60 + secondTime;
sum += end - start;
}
System.out.println(sum);
}
}
✅ 회고 / 배운 점
- 처음에는 출/퇴근 시간에 시간,분 계산을 따로 따로 해준 다음에 더했는데 더 복잡해졌다.
- 심플하게 퇴근시간에 총 합(분) - 출근시간에 총 합(분)으로 계산 하도록 변경 했다.