알고리즘
백준 25044번 에어컨 (JAVA)
박카스마시며코딩
2023. 3. 22. 15:17
https://www.acmicpc.net/problem/25044
25044번: 에어컨
대부분의 DGIST 기초학부 학생들은 기숙사에서 생활하고 있습니다. 여름이 다가옴에 따라 자유롭게 온도를 설정할 수 있는 시원한 에어컨을 사용하게 될 예정입니다. 안타깝게도 에어컨은 매일 1
www.acmicpc.net
package BOJ.simulation;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.List;
import java.util.StringTokenizer;
import java.util.function.Function;
public class BOJ_25044 {
private static final int MIN_OF_HOUR = 60;
private static final int HOUR_OF_DAY = 24;
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
Function<String,Integer> stoi = Integer::parseInt;
int n = stoi.apply(st.nextToken());
int k = stoi.apply(st.nextToken());
cal(n,k);
}
private static int calMin(int hour){
return hour * MIN_OF_HOUR;
}
private static String minToString(int time){
StringBuilder sb = new StringBuilder();
int hour = time / MIN_OF_HOUR;
int min = time % MIN_OF_HOUR;
hour %= 24;
if(hour < 10){
sb.append(0);
}
sb.append(hour);
sb.append(":");
if(min < 10){
sb.append(0);
}
sb.append(min);
return sb.toString();
}
private static int[] TIME_TERM = {3 * MIN_OF_HOUR, 3 * MIN_OF_HOUR , 18 * MIN_OF_HOUR};
private static void cal(int n, int k) {
int min = calMin(15);
int today = calMin(n * HOUR_OF_DAY);
int tomorrow = calMin((n+1) * HOUR_OF_DAY);
List<Integer> result = new LinkedList<>();
int cnt = 0;
while(min < tomorrow){
if(today <= min){
result.add(min);
}
min += TIME_TERM[cnt % 3];
cnt++;
if(cnt % 3 == 0){
min += k;
}
}
System.out.println(result.size());
for(int i = 0 ; i < result.size() ; i++){
System.out.println(minToString(result.get(i)));
}
}
}