24
친구가 풀어달라고 해서 오랜만에 풀어본 백준 문제이다.
구글에 검색해도 자바 풀이는 안 나온다고 해서 제일 먼저 올려보고픈 욕심에 풀이를 올려본다.😉
문제에서 핵심은 현재 시각이 임무 시작 시각보다 큰 경우를 처리하는 방식이다.
- boolean 변수로 뺄셈 시 앞의 수를 빌려왔는지 체크한다.
- 그리고 다음으로 넘어갔을 때 boolean 변수에 체크가 되어있으면 1을 빼주면 된다.
- 빌려오는 경우에 hour면 24를 더해주고 minute, second면 60을 더해준다. 그리고 boolean 변수에 체크한다.
초심자 친구에게 최대한 쉽고 친절하게 알려주고 싶어서 api를 최대한 안쓰고 변수명을 한글로 지었다. 불편해도 이해해주시길..ㅎ
import java.util.Scanner;
public class Q1408 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String 첫번째입력 = scanner.nextLine();
String 두번째입력 = scanner.nextLine();
String[] 현재시각저장 = 첫번째입력.split(":");
String[] 임무시작시각저장 = 두번째입력.split(":");
String[] 정답저장 = new String[3];
boolean 뺄셈시앞의수를빌려왔는지여부 = false;
for (int i = 2; i >= 0; i--) {
int 현재시각 = Integer.parseInt(현재시각저장[i]);
int 임무시작시각 = Integer.parseInt(임무시작시각저장[i]);
if (뺄셈시앞의수를빌려왔는지여부) {
임무시작시각--;
}
if (임무시작시각 < 현재시각) {
if (i == 0) { // hour인 경우
임무시작시각 += 24;
} else {
임무시작시각 += 60;
}
뺄셈시앞의수를빌려왔는지여부 = true;
} else {
뺄셈시앞의수를빌려왔는지여부 = false;
}
int result = 임무시작시각 - 현재시각;
if (result < 10) {
정답저장[i] = "0" + result;
} else {
정답저장[i] = String.valueOf(result);
}
}
System.out.println(정답저장[0] + ":" + 정답저장[1] + ":" + 정답저장[2]);
}
}
'Algorithm' 카테고리의 다른 글
프로그래머스 구명보트 Java (0) | 2020.11.23 |
---|---|
백준 1937 욕심쟁이 판다 Java (0) | 2019.12.10 |
좌표가 원의 범위안에 포함되어있는지 체크 (1) | 2019.11.14 |
백준 10827 a^b Java (0) | 2019.11.01 |
백준 3055 탈출 Java (1) | 2019.10.24 |