자바 알고리즘(백준)

알고리즘 적응기(1)

류정근 2024. 4. 2. 22:29

인프런 강의와 내배캠 자바 핸드북을 통해 어느정도 자바를 익히고 있던 중 팀원의 추천으로 백준이란 것을 알게 되었다.

사칙 연산은 간단하게 해결하고 조건문 부터 무언가 막히기 시작했다.

package practice.backjun.If;

import java.util.Scanner;

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

        int a = scanner.nextInt();
        int b = scanner.nextInt();
        int A = 60 * a;
        int hour = (A + b -45) / 60;
        int minute = (A + b - 45) % 60;

        if ((A + b - 45) < 0 ) {
            int c = (60 * 24 + b - 45) / 60;
            int d = (60 * 24 + b - 45 ) % 60;
            System.out.println(c);
            System.out.println(d);
        } else if ((A + b - 45) > 1440) {
            hour = 0;
            System.out.println(hour);
            System.out.println(minute);
        } else {
            System.out.println(hour);
            System.out.println(minute);
        }
    }
}

 

제일 어려웠던 알람 문제!!!

분에서 60을 나눠서 몫은 시간으로 나머지는 분으로 하는 것은 생각보다 빨리 접근했지만

23시 59분에서 0시 0분으로 넘어가는거, 0시 0분에서 23시 59분으로 내려오는 것에서 막혀 억지로 짜넣었지만 만족스럽지 못했다.

 

그다음 비슷한 오븐문제

package practice.backjun.If;

import java.util.Scanner;

public class oven {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        // 입력: 시간 분 , 조리시간
        // 츨력: 시간. 분
        int A = scanner.nextInt();
        int B = scanner.nextInt();
        int C = scanner.nextInt();

        int a = A * 60 + B + C;
        int hour = a / 60;
        int minute = a % 60;

        if (a >= 60 * 24) {
            hour -= 24;
            System.out.println(hour);
            System.out.println(minute);
        } else {
            System.out.println(hour);
            System.out.println(minute);
        }

    }


}

 

 

비슷한 접근에서 한가지가 떠올랐다.

24 * 60 분이 넘어가면 24시간을 빼주기만 하면 된다는 것...

뿌듯하면서도 허탈한 이느낌...

그래도 한가지 사고방식을 배웠단 것에 만족

'자바 알고리즘(백준)' 카테고리의 다른 글

숫자 N을 B 진법으로 나타내기  (0) 2024.05.01
별찍기 (하드버전)  (1) 2024.04.25