Notice
Recent Posts
Recent Comments
Link
- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 사용법
- PostgreSQL
- java
- jaekjoon java
- javascript
- putty
- 메뉴얼
- poll scm
- 제수가 0입니다
- rocky linux
- ora-01476
- subversion
- 백준 java jaekjoon JAVA
- 1773번
- 백준
- SVN
- 백준 JAVA
- 서버 접근
- bekjoon
- linux
- boj
- jsonb select
- baekjoon
- Rocky Linux 9
- DBeaver
- available plugins
- 환경번수
- jenkins
- tomcat-users.xml
- 자바
Archives
기록하는 개발자
[백준 1408번] 24 - JAVA 알고리즘 본문
1408번 |
문제 | |
도현이는 Counter Terror Unit (CTU)에서 일하는 특수요원이다. 도현이는 모든 사건을 정확하게 24시간이 되는 순간 해결하는 것으로 유명하다. 도현이는 1시간 만에 범인을 잡을 수 있어도 잡지 않는다. 정확하게 24시간이 되는 순간이 아니면 잡지 않는 CTU 특수요원이다. 2008년 3월 3일 월요일, CTU는 새학기에 맞춰 핵폭탄을 날리겠다는 테러 정보를 입수했다. CTU에서는 특수요원 도현이에게 이 임무를 맡겼다. CTU의 프로그래머 준규는 이 사건의 배후가 김선영이란 것을 해킹을 통해 밝혀내었다. 도현이는 선영이를 임무를 시작한지 정확하게 24시간이 되는 순간에 잡으려고 한다. 만약 지금 시간이 13:52:30이고, 임무를 시작한 시간이 14:00:00 이라면 도현이에게 남은시간은 00:07:30 이다. 모든 시간은 00:00:00 ~ 23:59:59로 표현할 수 있다. 입력과 출력에 주어지는 모든 시간은 XX:XX:XX 형태이며, 숫자가 2자리가 아닐 경우에는 0으로 채운다. 도현이가 임무를 시작한 시간과, 현재 시간이 주어졌을 때, 도현이에게 남은 시간을 구하는 프로그램을 작성하시오. |
|
입력 | |
첫째 줄에는 현재 시간이, 둘째 줄에는 도현이가 임무를 시작한 시간이 주어진다. 임무를 시작한 시간과 현재 시간이 같은 경우는 주어지지 않는다. |
|
출력 | |
첫째 줄에 도현이가 임무를 수행하는데 남은 시간을 문제에서 주어지는 시간의 형태 (XX:XX:XX)에 맞춰 출력한다. |
|
예제 입력 | 예제 출력 |
13:52:30 14:00:00 |
00:07:30 |
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // 선언
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); // 선언
int[] now = new int[3]; //현재시간
int[] end = new int[3]; //마감시간
String[] diff = new String[3]; //잔여시간
StringTokenizer st1 = new StringTokenizer(br.readLine(),":");
StringTokenizer st2 = new StringTokenizer(br.readLine(),":");
int up = 0;
for(int i = 0; i<now.length; i++) {
now[i] =Integer.parseInt(st1.nextToken());
end[i] =Integer.parseInt(st2.nextToken());
}
for(int i = 2; i>=0; i--) {
if(i>0) {
if(end[i]-now[i]+up<0) {
if(end[i]-now[i]+60+up<0) {
diff[i] =end[i]-now[i]+120+up+"";
up = -2;
}else {
diff[i] =end[i]-now[i]+60+up+"";
up = -1;
}
}else if(end[i]-now[i]+up>=60){
diff[i] =end[i]-now[i]-60+up+"";
up = +1;
}else {
diff[i] =end[i]-now[i]+up+"";
up = 0;
}
}else {
if(end[i]-now[i]+up<0) {
if(end[i]-now[i]+24+up<0) {
diff[i] =end[i]-now[i]+48+up+"";
}else {
diff[i] =end[i]-now[i]+24+up+"";
}
}else if(end[i]-now[i]+up>=24) {
diff[i] = (end[i]-now[i]+up)%24+"";
}else {
diff[i] =end[i]-now[i]+up+"";
}
}
}
for(int i = 0; i<diff.length;i++) { //2자리로 변형
diff[i] = String.format("%02d",(Integer.parseInt(diff[i])));
}
bw.write(diff[0]+":"+diff[1]+":"+diff[2]);
bw.close();
br.close();
}
}
개인적으로 정리한 내용을 간단하게 풀어 작성했습니다. 이해가 안가는 부분은 댓글 남겨주시면 설명해드리겠습니다. |
'Baekjoon Online Judge' 카테고리의 다른 글
[백준 2863번] 5와 6의 차이 - JAVA 알고리즘 (0) | 2022.04.01 |
---|---|
[백준 2711번] 오타맨 고창영 - JAVA 알고리즘 (0) | 2022.03.29 |
[백준 1668번] 트로피 진열 - JAVA 알고리즘 (0) | 2022.03.28 |
[백준 2484번] 주사위 네개 - JAVA 알고리즘 (0) | 2022.03.25 |
[백준 1100번] 하얀 칸 - JAVA 알고리즘 (0) | 2022.03.25 |
Comments