📍 문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/17676
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
💡 접근
1. 문자열들 파싱해서 시작 시간, 처리 시간을 구한 뒤 리스트에 넣었다.
2. 각 구간의 처리량을 구하는 부분에서 시간을 좀 오래 잡아먹었다.
👩💻 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class Main {
public int solution(String[] lines) {
int answer = 0;
ArrayList<Time> list = new ArrayList<>();
//응답완료시간, 처리 시간 으로 시작 시간 구하기
for(int i = 0; i < lines.length; i++) {
String[] split = lines[i].split(" ");
//시간이랑 처리시간만 이용함
String[] split2 = split[1].split(":");
int hour = Integer.parseInt(split2[0]) * 3600 * 1000;
int minute = (Integer.parseInt(split2[1]) * 60) * 1000;
int second = (int) (Double.parseDouble(split2[2]) * 1000);//57.421 -> 57421 표현
int end = hour + minute + second;
split[2] = split[2].replace("s", "");
int start = end - (int) (Double.parseDouble(split[2]) * 1000) + 1;
list.add(new Time(start, end));
}
System.out.println(list);
//현재 끝시간을 기준으로 1초 이하인 부분 찾기
for(int i = 0; i < list.size(); i++) {
int cnt = 1; //자기 구간은 처리
System.out.println("end : " + list.get(i).end);
for(int j = i+1 ; j < list.size(); j++) {
System.out.println("start : " + list.get(j).start);
if(list.get(j).start - list.get(i).end < 1000) cnt++;
}
System.out.println("cnt : " + cnt);
answer = Math.max(cnt, answer);
}
return answer;
}
private class Time {
private int start;
private int end;
public Time(int start, int end) {
this.start = start;
this.end = end;
}
@Override
public String toString() {
return "Time{" +
"start=" + start +
", end=" + end +
'}';
}
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Main t = new Main();
String[] lines = {
"2016-09-15 20:59:57.421 0.351s",
"2016-09-15 20:59:58.233 1.181s",
"2016-09-15 20:59:58.299 0.8s",
"2016-09-15 20:59:58.688 1.041s",
"2016-09-15 20:59:59.591 1.412s",
"2016-09-15 21:00:00.464 1.466s",
"2016-09-15 21:00:00.741 1.581s",
"2016-09-15 21:00:00.748 2.31s",
"2016-09-15 21:00:00.966 0.381s",
"2016-09-15 21:00:02.066 2.62s"
};
t.solution(lines);
}
}
'Algorithm > programmers' 카테고리의 다른 글
[2021 카카오 인턴십]표 편집 (0) | 2022.07.14 |
---|---|
[2018 카카오 블라인드 1차]셔틀버스 (0) | 2022.07.14 |
[2022 카카오 블라인드]양궁 대회★ (0) | 2022.07.06 |
[2018 카카오 블라인드 3차]파일명 정렬 (0) | 2022.07.06 |
[2022 카카오 블라인드]주차 요금 계산 (0) | 2022.05.03 |