[Softeer Level 1] 근무시간

MinHee·2023년 3월 27일
0
post-thumbnail

C++

#include<iostream>
#include<array>
#include<string>
#include<sstream>

using namespace std;

int main(int argc, char** argv)
{
	array<string, 10> input_str;
	int result = 0;
	int after_hour, before_hour, after_min, before_min;
	stringstream sstream;

	for (int i = 1; i < input_str.size(); i += 2) {
		cin >> input_str[i - 1] >> input_str[i];
	} //입력 받아오기

	for (int i = 1; i < input_str.size(); i += 2) {
		input_str[i].string::replace(2, 1, " ");
		input_str[i - 1].string::replace(2, 1, " ");

		sstream.clear();

		sstream.str(input_str[i - 1]);
		sstream >> before_hour >> before_min;

		sstream.clear();

		sstream.str(input_str[i]);
		sstream >> after_hour >> after_min;
		
        //STRING TO INT PARSING
        
		result += (after_hour - before_hour) * 60 + (after_min - before_min);

		
		}

	cout << result;

	return 0;
}

stringstream 객체를 연속하여 사용할 때는 clear()를 호출하여야 한다는 것을 몰라,, 비주얼 스튜디오로 디버깅까지 하면서,,, 왜 쓰레기값이 들어가는지 한참 고민하였다...ㅎ

istringstream 객체가 좀 더 용이할 것 같은데,, 더 알아보도록..!

Java

import java.util.*;
import java.io.*;
import java.text.SimpleDateFormat;


public class Main
{
    public static void main(String args[])
    {
        Scanner sc = new Scanner(System.in);
        String[][] time = new String[5][2];
        SimpleDateFormat sf = new SimpleDateFormat("HH:mm");
        String input;
        Date start,end;
        long result = 0;

        try{
            for(int i = 0;i<time.length ;i++){
            input = sc.nextLine();
            time[i]= input.split(" "); //0 : 시작시간 1 :종료시간
            start = sf.parse(time[i][0]);
            end = sf.parse(time[i][1]);
            result += (end.getTime() - start.getTime()) / 60000;
        }
        }
        catch(Exception e){
            
        }
        
        System.out.println(result);

    }
}

그래도 java는 좀 무난하게 풀지 않았나..

profile
성장하는 개발자

0개의 댓글