개발일지

[백준 JAVA] 2884번: 알람시계 / 2525번: 오븐 시계 / 2480번: 주사위 세개 본문

Java/알고리즘 공부

[백준 JAVA] 2884번: 알람시계 / 2525번: 오븐 시계 / 2480번: 주사위 세개

O'mil 2023. 1. 27. 09:16
728x90

#2884번: 알람 시계

문제

 


 

풀이
import java.util.Scanner;

public class Main_2884 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        int H = in.nextInt();
        int M = in.nextInt();

        if (M >= 45) {
            M = M - 45;
            System.out.printf("%d %d", H, M);
        } else {
            M = 60 - (45 - M);
            H--;
            if (H < 0) {
                H = 23;
            }
            System.out.printf("%d %d", H, M);
        }
        in.close();
    }
}

- 입력받은 'M'이 45거나, 45보다 크면 M-45를 하고 시간은 그대로 유지한다.

 

- 'M'이 45보다 작을 시 45에서 분을 뺀 후 60에서 한 번 더 빼준다.

- 시간은 -1을 해주고 만약 H가 -1이 나오면 23으로 설정해준다.

 


#2525번: 오븐 시계

문제

 


 

풀이
import java.util.Scanner;
public class Main_2525 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        int H = in.nextInt();   // 현재 시
        int M = in.nextInt();   // 현재 분
        int Cook = in.nextInt();    // 오븐 시간

        int Finish = M + Cook;

        if ( Finish % 60 == 0) {
            H = H + (Finish / 60);
            M = 0;
        } else {
            H = H + (Finish / 60);
            M = Finish % 60;
        }
        if (H > 23)
            H = 0;

        in.close();
        System.out.printf("%d %d", H, M);
    }
}

- 시계를 생각하고 풀어 23이 넘어가면 모두 0으로 바꿔 버려 오류가 났다.

 

        if (H > 23)
            H = H - 24;

- 시간이 23시가 넘어가는 조건문을 수정하여 해결하였다.

- 23보다 크면 24를 빼줘 다음 날로 넘어가도록 수정하였다.

 

 


#2480번: 주사위 세개

문제

 


 

풀이
import java.util.Scanner;

public class Main_2480 {
    public static void main(String[] arts) {
        Scanner in = new Scanner(System.in);

        int a1 = in.nextInt();
        int a2 = in.nextInt();
        int a3 = in.nextInt();

        int answer = 0;
        int max = 0;

        if ( a1 == a2 && a1 == a3) {
            answer = 10000 + a1 * 1000;
        } else if (a1 == a2 || a2 == a3 || a1 == a3) {
            if ( a1 == a2 || a1 == a3) {
                answer = 1000 + a1 * 100;
            } else if (a2 == a3) {
                answer = 1000 + a2 * 100;
            }
        } else {
            if ( a1 > a2) {
                max = a1;
            } else {
                max = a2;
            }
            if ( max < a3) {
                max = a3;
            }
            answer = max * 100;
        }
        in.close();
        System.out.print(answer);
    }
}

- 먼저 3 숫자가 모두 같을 경우 AND(&&)를 이용해 조건문을 만들어줬다.

- 2개가 같을 경우는 OR( | | )를 이용해 나타내줬고 구문 안에 if문을 하나 더 써 값별로 앤써 값을 다르게 적어줬다.

- 3개가 다 다를 경우 max 값을 구해야 하므로 if 문을 2번 사용해 max값을 구해줬다.

728x90
Comments