[Algorithm] 백준 2525번 오븐 시계

안요한·2022년 7월 3일
0

연습문제

목록 보기
5/8

입력
첫째 줄에는 현재 시각이 나온다. 현재 시각은 시 A (0 ≤ A ≤ 23) 와 분 B (0 ≤ B ≤ 59)가 정수로 빈칸을 사이에 두고 순서대로 주어진다. 두 번째 줄에는 요리하는 데 필요한 시간 C (0 ≤ C ≤ 1,000)가 분 단위로 주어진다.

출력
첫째 줄에 종료되는 시각의 시와 분을 공백을 사이에 두고 출력한다. (단, 시는 0부터 23까지의 정수, 분은 0부터 59까지의 정수이다. 디지털 시계는 23시 59분에서 1분이 지나면 0시 0분이 된다.)

내 풀이

  • 조금 무식하게 하나하나 다 설정해서 풀었다.
  • 문제 요구사항에는 맞게 입력과 출력이 되었지만, 백준 컴파일에서는 오류가 났다.
  • 답답한 마음에 검색을 해보았더니, 훨씬더 쉽고 간결한 방법들이 존재했다.
import java.util.Scanner;

public class Main {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        
        System.out.println("시간 입력");
        int hour = sc.nextInt();
        System.out.println("분 입력");
        int min = sc.nextInt();
        System.out.println("요리시간 입력");
        int ne = sc.nextInt();
        
        if(min + ne >= 60){ //입력한 분과 요리시간이 60분을 넘게되면 
            hour += 1;      //입력한 시간에 +1을 해줌
            min = (min+ne) - 60; //60분이 시간으로 넘어갔으니 60을 빼줌
            if(hour >= 24){   // 시간이 자정(24시)이 되면 
                hour = 0;     // 시간을 0으로 초기화
            }
            if(min == 60){    // 분이 60이 되면 시간은 +1 해주고 분은 0으로 초기화
                hour += 1;
                min = 0;
            }
        } else {              //입력한 분과 요리시간이 60분이 안넘으면 그냥 감
            min = min + ne;
        }
        System.out.println( hour + " " + min);
    }
}

모범답안

  • 출처 : https://imototot.tistory.com/338
  • 시간은 60으로 나누어 몫을 시간에 더해주고
  • 분은 60으로 나누어 나머지값을 더해준다.
  • 이 방법으로 하면 if문에서 요리시간을 더해줄 필요가 없어져 코드가 더욱 간결해진다.
  • 따라서 시간이 24시 이상일 경우와, 분이 60분 이상일 경우 두 가지만 나누면 끝
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int h = sc.nextInt();
        int m = sc.nextInt();
        int t = sc.nextInt();

        h += t / 60; //소요시간을 60으로 나누어 몫을 시간에 더해줌(시간으로 변환)
        m += t % 60; //소요시간을 60으로 나누어 나머지값을 시간에 더해줌(분으로 변환
        
        if(m >= 60){ //분이 60을 넘게되면 분에서 60을 빼준다.
        			 //ex) 70 -= 60 -> 10, 60 -= 60 -> 0
            h += 1;	 //분이 60을 넘었으므로 시간이 하나 추가됨
            m -= 60;
        }
        if(h >= 24){ //시간이 24시를 넘게되면 시간에서 24를 빼준다.
       				 //ex) 25 -= 24 -> 1, 24 -= 24 -> 0	
            h -= 24; 
        }
        
        System.out.println(h + " " + m);
    }
}
profile
걍이렇게돼브렀다리

0개의 댓글