Programming/BaekJoon
백준 2884번 알람시계
helloworld:
2021. 7. 14. 16:14
시간과 분을 입력받는다.
Scanner를 이용할 수도 있고 BufferedReader를 이용할 수도 있다.
나는 스캐너를 이용했고
조건을 다음과 같이 나누었다.
45분 미만일 경우
-> 분에 15를 더하고 시간에서 1을 빼고,
45분 이상일 경우
-> 분에서 45를 빼기
단, 45분 미만일 경우에
시간이 0인 경우는 시간이 -1이 되므로 시간을 23으로 설정했다.
최종적으로
45분 미만일 경우
-> 분에 15를 더하고
-> 시간이 1 미만인 경우(0인 경우)
-> 시간 = 23
-> 시간이 1이상인 경우
-> 시간 -= 1
45분 이상일 경우
-> 분에서 45를 빼기
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int h = sc.nextInt();
int m = sc.nextInt();
if(m < 45) {
if(h <1) {
h = 23;
} else {
h -= 1;
}
m += 15;
} else {
m -= 45;
}
System.out.printf("%d %d",h,m);
}
}
입력은 BufferedReader를 이용할 수도 있다.
위의 내 풀이가 시간이 그렇게 좋게 나오지는 않았다.
인터넷의 다른 풀이를 보니 StringBuilder를 이용한 방법이 내가 푼 방법보다 2.5배는 더 빠르게 나온 것을 보았다.