[백준] 2525번 : 오븐 시계 - JAVA(자바)

Life is ninanino·2022년 10월 4일
0

[백준] JAVA

목록 보기
1/37
post-thumbnail

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



많이도 틀렸다...ㅎ...

        if(mm+time>=60) {
            hh++;
            mm = time - mm; 
        }else
            mm = time + mm;
        if (hh >= 24)
            hh = hh-23;
        System.out.println(hh+" "+mm);
    }

맨 처음엔 입력한 시간에서 추가한 시간만 빼주면 될 줄 알았는데
음수가 출력됐다... 넘어가는 시간을 계산하지 못한 나의 실수....

		if(mm+time>=60){
            hh++;
            mm = mm+time%60;
        }else
            mm = time + mm;
        if (hh >= 24)
            hh = hh-24;
        System.out.println(hh+" "+mm);

그 다음엔 이렇게 수정했더니
역시나 넘어가는 값을 더해주지 못했다.

import java.io.*;
import java.util.*;

public class Main{
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer str = new StringTokenizer(br.readLine()," ");
        int hh = Integer.parseInt(str.nextToken());
        int mm = Integer.parseInt(str.nextToken());
        int time = Integer.parseInt(br.readLine());
        br.close();

        mm = mm+time;

        if(mm>=60){
            int hour = mm / 60;
            if(hour>0){
                hh+=hour;
            }
            mm = mm%60;
        }else
            mm = time + mm;
        if (hh >= 24)
            hh = hh-24;
        System.out.println(hh+" "+mm);
    }
}

마지막 즈음엔 거의 근접하게 풀었는데

}else
            mm = time + mm;

이 부분에서 오답이 났다.
결국 1시간에 걸쳐 완성한 문제....

정답

package 백준;// @ author ninaaano

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class 오븐시계 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer str = new StringTokenizer(br.readLine()," ");
        int hh = Integer.parseInt(str.nextToken());
        int mm = Integer.parseInt(str.nextToken());
        int time = Integer.parseInt(br.readLine());
        br.close();

        mm = mm+time;

        if(mm>=60) {
            int hour = mm / 60;
            if (hour > 0) {
                hh += hour;
            }
            mm = mm % 60;
        }
        if (hh >= 24)
            hh = hh-24;
        System.out.println(hh+" "+mm);
    }
}

문제를 풀고 인터넷에서 더 간단한 방법이 있을까 해서 찾아봤는데
다들 쉬운 문제라고 한다
나만 어려웠나보다...

++ 다른 풀이

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
 
public class Main {
    public static void main(String[] args) throws IOException {
        
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");
        int A = Integer.parseInt(st.nextToken());
        int B = Integer.parseInt(st.nextToken());
 
        int C = Integer.parseInt(br.readLine());
 
        int min = 60 * A + B;   // 시 -> 분
        min += C;
 
        int hour = (min / 60) % 24;
        int minute = min % 60;
 
        System.out.println(hour + " " + minute);
 
    }
}

출처 : st님 블로그

이렇게 간단하게 시간을 환산해서 푸는 방법도 있었다....
나도 하다보면 저렇게 간단히 풀 수 있겠지?

profile
백엔드 프로그래밍을 공부하고 있습니다. AWS, 클라우드 환경에 대해 관심이 많습니다.

0개의 댓글