본문 바로가기

Backend/JAVA

[Algorithm] 데일리 백준

반응형
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {
  public static void main(String[] args) throws Exception{

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    StringBuilder sb = new StringBuilder();

//    String[] inputs = br.readLine().split(" ");
//
//    int a = Integer.parseInt(inputs[0]);
//
//    int b = Integer.parseInt(inputs[1]);
//
//    if( a < -10000 || a > 10000 || b < -10000 || b > 10000){
//      throw new Exception();
//    }
//
//    if( a > b ){
//      System.out.println(">");
//    } else if ( a < b ) {
//      System.out.println("<");
//    } else {
//      System.out.println("==");
//    }

//    String score = br.readLine();
//
//    int grade = Integer.parseInt(score);
//
//    if(grade <= 100 && grade >= 90){
//      System.out.println("A");
//    } else if(grade < 90 && grade >= 80){
//      System.out.println("B");
//    } else if(grade < 80 && grade >= 70){
//      System.out.println("C");
//    } else if(grade < 70 && grade >= 60){
//      System.out.println("D");
//    } else if(grade < 60 && grade >= 0){
//      System.out.println("F");
//    } else {
//      throw new Exception();
//    }

//    String year = br.readLine();
//
//    int checkYear = Integer.parseInt(year);
//    int leapYear = 1;
//    if ( checkYear % 4 == 0 && checkYear % 100 != 0 ) {
//      leapYear = 1;
//    } else if ( checkYear % 100 == 0 && checkYear % 400 == 0 ) {
//      leapYear = 1;
//    } else {
//      leapYear = 0;
//    }
//
//    System.out.println(leapYear);

//    String xAxis = br.readLine();
//    String yAxis = br.readLine();
//
//    int x = Integer.parseInt(xAxis);
//    int y = Integer.parseInt(yAxis);
//
//    if ( x < -1000 || x > 1000 || x == 0 || y < -1000 || y > 1000 || y == 0 ) {
//      throw new Exception();
//    }
//
//    if( x > 0 && y > 0 ) {
//      System.out.println("1");
//    } else if ( x > 0 && y < 0 ) {
//      System.out.println("4");
//    } else if ( x < 0 && y > 0) {
//      System.out.println("2");
//    } else {
//      System.out.println("3");
//    }

//    String[] time = br.readLine().split(" ");
//
//    int hour = Integer.parseInt(time[0]);
//    int min = Integer.parseInt(time[1]);
//
//    int aHour = 0;
//    int aMin = 0;
//
//    if( hour < 0 || hour > 23 || min < 0 || min > 59){
//      throw new Exception();
//    }
//
//    if ( min < 45 ) {
//      if( hour < 1 ){
//        aHour = hour + 24 - 1;
//        aMin = min + 60 - 45;
//      } else {
//        aHour = hour - 1;
//        aMin = min + 60 - 45;
//      }
//    } else {
//      aHour = hour;
//      aMin = min - 45;
//    }
//
//    sb.append(aHour + " " + aMin);
//
//    System.out.println(sb);

    String[] current = br.readLine().split(" ");
    String timer = br.readLine();

    int hour = Integer.parseInt(current[0]);
    int min = Integer.parseInt(current[1]);

    int cTime = Integer.parseInt(timer);

    int expireHour = 0;
    int expireMin = 0;

    if ( hour < 0 || hour > 23 || min < 0 || min > 59 || cTime < 0 || cTime > 1000){
      throw new Exception();
    }

    int tMin = cTime + min;

//    // 1st try
//    if ( tMin < 60) {
//      expireHour = hour;
//      expireMin = tMin % 60;
//    } else {
//        if( hour + (tMin/60) > 23){
//          expireHour = ((hour + (tMin/60)) / 24)-1;
//        } else {
//          expireHour = hour + (tMin/60);
//        }
//        expireMin = tMin % 60;
//    }

    // 2nd try
    if (tMin < 60){
      expireHour = hour;
      expireMin = tMin;
    } else {
      if (tMin/60 > 1) {
        if(hour + (tMin/60) > 23){
          expireHour = hour + (tMin/60) - 24;
        } else {
          expireHour = hour + (tMin/60) ;
        }
        expireMin = tMin - (tMin/60)*60;
      } else {
        if(hour + (tMin/60) > 23){
          expireHour = 0;
        } else {
          expireHour = hour + 1 ;
        }
        expireMin = tMin - (tMin/60)*60;
      }
    }

    sb.append(expireHour + " " + expireMin);
    System.out.println(sb);  }
}

 

더보기

45분 앞서는 문제 간단히 리팩토링

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String[] time = br.readLine().split(" ");
        int hour = Integer.parseInt(time[0]);
        int min = Integer.parseInt(time[1]);

        // 유효성 검증
        if(hour < 0 || hour > 23 || min < 0 || min > 59) {
            throw new IllegalArgumentException("Invalid time input");
        }

        min -= 45;  // 45분 어차피 빠짐

        if(min < 0) {  // 시단위 조절
            min += 60;
            hour = (hour == 0) ? 23 : hour - 1;
        }

        System.out.println(hour + " " + min);
    }
}

 

더보기

오븐시계 간단히 리팩토링

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String[] current = br.readLine().split(" ");
        int hour = Integer.parseInt(current[0]);
        int min = Integer.parseInt(current[1]);
        int cTime = Integer.parseInt(br.readLine());

        // 유효성 검사
        if (hour < 0 || hour > 23 || min < 0 || min > 59 || cTime < 0 || cTime > 1000) {
            throw new IllegalArgumentException("Invalid input");
        }

        int totalMinutes = hour * 60 + min + cTime;  // 전체 시간을 분으로 계산
        int expireHour = (totalMinutes / 60) % 24;  // 24시간 형식으로 시간 계산
        int expireMin = totalMinutes % 60;          // 분 계산

        System.out.println(expireHour + " " + expireMin);
    }
}
반응형

'Backend > JAVA' 카테고리의 다른 글

[Algorithm] 데일리 백준  (0) 2024.04.09
[Algorithm] 데일리 백준  (0) 2024.04.05
[Algorithm] 데일리 백준  (0) 2024.04.03
[Algorithm] 데일리 백준  (2) 2024.04.02
[Java] 시간 비교, 시간 파싱  (0) 2024.03.14