ToBe끝판왕

[ 알고리즘 ] 백준 2884번 문제 - 자바( JAVA ) 본문

■ 알고리즘/백준 JAVA

[ 알고리즘 ] 백준 2884번 문제 - 자바( JAVA )

업그레이드중 2022. 5. 23. 23:17
반응형

주의사항

※ 백준에서 정해진 출력 형식을 출력해야 한다.
※ 백준 알고리즘에서는 클래스명을 Main으로 해주어야 한다.

 


 

백준 2884번 문제

 

백준 알고리즘의 단계별 문제 풀기

2단계 < 조건문 >

 

 

 해당 문제 링

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

 

2884번: 알람 시계

상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다. 상근이는 모든 방법을 동원해보았지만,

www.acmicpc.net

 


 

코딩 하기

 

1) Scanner 사용

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();		// 분
        
        sc.close();
        
        if( M < 45 ) {
        	H--;				// 시( hour ) 1감소
            M = 60 - ( 45 - M );		// 분( minute ) 감소
        	if( H < 0 ) {
            	H = 23;
            }
            System.out.println( H + " " + M );
        }
        else {
        	System.out.println( H + " " + ( M - 45 ) );
        }
    }
}

 

 

2) BufferedReader 사용

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 ) );
        
        String Str = br.readLine();
        StringTokenizer st = new StringTokenizer( Str, " " );
        int H = Integer.parseInt( st.nextToken() );
        int M = Integer.parseInt( st.nextToken() );
        
        if( M < 45 ) {
        	H--;					
            M = 60 - ( 45 - M );	
        	if( H < 0 ) {
            	H = 23;
            }
            System.out.println( H + " " + M );
        }
        else {
        	System.out.println( H + " " + ( M - 45 ) );
        }
    }
}

 

 

 

문제 해결

 

※ 주의사항
•  24시간 표현을 사용해야 한다.
•  입력은 공백 한칸을 기준으로 구분되어 입력된다.
•  출력 시, 불필요한 0 은 사용 X

 

 

▶  입력된 시간의 45분 전 시간을 구하는 문제

 

입력받은 분( minute ) 을 기준으로

•  45보다 작으면 시( hour )에서 - 1

•  45보다 크면 분( minute) 에서 - 45

•  또한, 시( hour )가 0보다 작아질 경우 시( hour )을 23으로 수정한다.

•  분( minute )은 60분이니, 만약 입력값이 45보다 작을경우 ( 45 - 입력값 )의 차이만큼 60에서 빼주면 된다.

   즉, 60 - ( 45 - 입력값 ) 이 된다.

        if( M < 45 ) {
        	H--;				// 시( hour ) 1감소
            M = 60 - ( 45 - M );		// 분( minute ) 감소
        	if( H < 0 ) {
            	H = 23;
            }
            System.out.println( H + " " + M );
        }
        else {
        	System.out.println( H + " " + ( M - 45 ) );
        }

 

 

 

 

 

 

반응형
Comments