JAVA/백준 문제풀이

BOJ_5575_타임 카드 (백준 문제풀이/Java)

최뭉뭉 2022. 10. 23. 13:18

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

 

5575번: 타임 카드

JOI 상사는 직원의 근무시간을 타임 카드로 관리하고있다. 직원들은 전용 장비를 사용하여 타임 카드에 출근 시간을 기록한다. 근무를 마치고 퇴근할 때도 타임 카드에 퇴근 시간을 기록한다.

www.acmicpc.net

 

 


 

🙂 문제 해석

총 3줄로 A, B, C씨의 출퇴근 시간이 시, 분, 초로 입력된다.

시, 분, 초를 따로 계산하면 복잡해지기 때문에 모든 출퇴근시간을 초로 바꾼 후 두개를 빼서 계산한다.

뺀 결과값은 다시 시, 분, 초로 변환해주는 작업이 필요하다

 

🙂 풀이 코드

 

import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String[] a = scanner.nextLine().split(" ");
        List<Integer> aList = Arrays.stream(a).map(Integer::parseInt).collect(Collectors.toList());
        String[] b = scanner.nextLine().split(" ");
        List<Integer> bList = Arrays.stream(b).map(Integer::parseInt).collect(Collectors.toList());
        String[] c = scanner.nextLine().split(" ");
        List<Integer> cList = Arrays.stream(c).map(Integer::parseInt).collect(Collectors.toList());
        calculateWorkTime(aList);
        calculateWorkTime(bList);
        calculateWorkTime(cList);
    }
    public static void calculateWorkTime(List<Integer> time){
        int startSeconds = time.get(0) * 3600 + time.get(1) * 60 + time.get(2);
        int endSeconds = time.get(3) * 3600 + time.get(4) * 60 + time.get(5);
        int workSeconds = endSeconds - startSeconds;

        int workHour = workSeconds/3600;
        workSeconds %= 3600;
        int workMinute = workSeconds/60;
        workSeconds %=60;
        int workSecond = workSeconds;

        System.out.println(workHour+" " + workMinute+" "+workSecond);
    }
}

1. 총 4개의 입력을 공백으로 쪼개서 리스트로 저장해준 후 map을 이용하여 전부 int로 변환시켜준다.

2. 같은 작업을 세번 반복해야하므로 Int List를 받는 함수 calculateWorkTime을 만들어준다.

3. 함수 내에서 리스트를 받아와서 시작시간과 끝시간을 전부 초로 변환해준다 

(시간*3600 = 초, 분*60 = 초)

4. 끝시간에서 시작시간을 뺀 후 결과값을 다시 시, 분, 초로 변환해주는 작업을 한다.

5. 계산한 시, 분, 초 값을 그대로 출력해주면 완료!

 

🙂 테스트 화면

 

함수를 만들어서 더 깔끔하게 풀어보긔