코테/백준

[백준/JAVA] 3029번: 경고

imname1am 2024. 6. 16. 20:02
반응형

📖 문제

https://www.acmicpc.net/problem/3029

 

 

 

💡  풀이 방식

• 문자열

1. 첫째 줄에 입력받은 현재 시간을 세미콜론(:) 단위로 분리한다.

2. 둘째 줄에 입력받은 나트륨 던질 시간을 세미콜론(:) 단위로 분리한다.

3. 둘째 줄에서 입력받은 (시간-분-초)를 첫째 줄에서 입력받은 (시간-분-초)로 빼는 연산을 수행한다.

4. 연산 후, 정인이가 기다려야 하는 시간을 출력해야 할 때 시간/분/초 중 한 자리 수의 경우, 앞에 0을 붙여 출력하도록 한다. (두 자릿수면 그냥 출력한다.)

 

 

 

💥 유의사항

정인이는 적어도 1초를 기다린다고 했으므로,

1과 2에서 입력받은 시간이 같은 경우, 24:00:00이 나오도록 처리해 줘야 한다.

 

 

 

🔺 코드

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import java.util.*;
import java.io.*;
 
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        String[] now = br.readLine().split(":");
        int h1 = Integer.parseInt(now[0]);
        int m1 = Integer.parseInt(now[1]);
        int s1 = Integer.parseInt(now[2]);
        
        String[] time = br.readLine().split(":");
        int h2 = Integer.parseInt(time[0]);
        int m2 = Integer.parseInt(time[1]);
        int s2 = Integer.parseInt(time[2]);
 
        // 적어도 1초를 기다려야 하므로, 시간이 같은 경우 처리 따로
        if(h1 == h2 && m1 == m2 && s1 == s2) {
            System.out.println("24:00:00");
            return;
        }
        
        int[] answer = new int[3];
        
        if(s2 < s1) {
            answer[2= s2+60 - s1;
            m2--;
        }
        else {
            answer[2= s2 - s1;
        }
        
        if(m2 < m1) {
            answer[1= m2+60 - m1;
            h2--;
        }
        else {
            answer[1= m2 - m1;
        }
        
        if(h2 < h1) {
            answer[0= h2+24 - h1;
        }
        else {
            answer[0= h2 - h1;
        }
        
        StringBuilder sb = new StringBuilder();
        if(answer[0< 10) {
            sb.append("0");
        }
        sb.append(answer[0+ ":");
        
        if(answer[1< 10) {
            sb.append("0");
        }
        sb.append(answer[1+ ":");
        
        if(answer[2< 10) {
            sb.append("0");
        }
        sb.append(answer[2]);
        
        System.out.println(sb.toString());
    }
}
cs

 

 

 

➕ 다른 풀이 방식

초간단 코드

 

[JAVA] 백준 3029 - 경고

문제 >창영마을에서 정인이의 반란은 실패로 끝났다. (3028번) 테러리스트로 변신한 정인이는 창영마을에 경고를 하려고 한다. 사실 정인이는 창영마을에서 제일 착한사람이다. 따라서, 사람들을

velog.io

 

 


💦 어려웠던 점

- 문제의 '적어도 1초를 기다린다'는 조건을 빠뜨려서 틀렸었다.

 

1회독 2회독 3회독 4회독 5회독
V        

(참고)

✔ 반례 참고

https://www.acmicpc.net/board/view/11341

 

 

반응형